假设我想创建以下三个表:
a = db.Table(
'a', metadata,
db.Column('id', db.Integer, nullable=False, primary_key=True),
db.Column('created', server_default=func.now()),
db.Column('updated', server_default=func.now(), onupdate=func.current_timestamp()),
db.Column('unique_to_a', db.INTEGER, nullable=True)
)
b = db.Table(
'b', metadata,
db.Column('id', db.Integer, nullable=False, primary_key=True),
db.Column('created', server_default=func.now()),
db.Column('updated', server_default=func.now(), onupdate=func.current_timestamp()),
db.Column('unique_to_b', db.INTEGER, nullable=True)
)
c = db.Table(
'c', metadata,
db.Column('id', db.Integer, nullable=False, primary_key=True),
db.Column('created', server_default=func.now()),
db.Column('updated', server_default=func.now(), onupdate=func.current_timestamp()),
db.Column('a_id', db.Integer, db.ForeignKey('a.id'), index=True, nullable=True),
db.Column('unique_to_c', db.INTEGER, nullable=True)
)
这三个表之间有共同的字段(id
, created
, 和 updated
),也有各自独有的字段。
是否有一种简单的方法来创建一个基础表,用于存储所有共有的字段?
例如:
base_table = db.Table(
'base', metadata,
db.Column('id', db.Integer, nullable=False, primary_key=True),
db.Column('created', server_default=func.now()),
db.Column('updated', server_default=func.now(), onupdate=func.current_timestamp()),
)
a = db.Table(
'a', metadata,
base_table,
db.Column('unique_to_a', db.INTEGER, nullable=True)
)
我们更倾向于在SQLAlchemy Core中完成所有操作(即不使用ORM)。
我们以前使用过
deepcopy
(from copy import deepcopy
),但我们认为在表之间共享列必须有更好的方法。