Foreign Key

class schemaobject.foreignkey.ForeignKeySchema(name, parent)

Object representation of a single foreign key. Supports equality and inequality comparison of ForeignKeySchema.

name is the column name. parent is an instance of TableSchema

Note

ForeignKeySchema objects are automatically created for you by ForeignKeySchemaBuilder and loaded under schema.databases[name].tables[name].foreign_keys

Example

>>> schema.databases['sakila'].tables['rental'].foreign_keys.keys()
['fk_rental_customer', 'fk_rental_inventory', 'fk_rental_staff']
Foreign Key Attributes
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].name
'fk_rental_inventory'
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].symbol
'fk_rental_inventory'
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].table_schema
'sakila'
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].table_name
'rental'
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].columns
['inventory_id']
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].referenced_table_name
'inventory'
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].referenced_table_schema
'sakila'
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].referenced_columns
['inventory_id']
#match_option will always be None in MySQL 5.x, 6.x
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].match_option
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].update_rule
'CASCADE'
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].delete_rule
'RESTRICT'
create()

Generate the SQL to create (ADD) this foreign key

>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].create()
'ADD CONSTRAINT `fk_rental_inventory`
FOREIGN KEY `fk_rental_inventory` (`inventory_id`)
REFERENCES `inventory` (`inventory_id`)
ON DELETE RESTRICT ON UPDATE CASCADE'
drop()

Generate the SQL to drop this foreign key

>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].drop()
'DROP FOREIGN KEY `fk_rental_inventory`'
schemaobject.foreignkey.ForeignKeySchemaBuilder(table)

Returns a dictionary loaded with all of the foreign keys available in the table. table must be an instance of TableSchema.

Note

This function is automatically called for you and set to schema.databases[name].tables[name].foreign_keys when you create an instance of SchemaObject

Previous topic

Index

Next topic

Option

This Page