【发布时间】:2014-03-21 18:45:41
【问题描述】:
我正在创建一个类似 REST 的 API 来将数据输入和输出旧数据库。目前我没有更改数据库结构的选项。数据库中几乎每个表都具有完全相同的结构。以下是我目前使用 Flask-SQLAlchemy 处理它的方式:
class MyDatasetBase(object):
timestamp = db.Column('colname', db.Float, primary_key=True)
val1 = db.Column(db.Float)
val2 = db.Column(db.Float)
val3 = db.Column(db.Float)
fkeyid = db.Column(db.Integer)
@declared_attr
def foreigntable(self):
return db.relationship('ForeignTableClass', uselist=False)
class Table1(MyDatasetBase, db.Model):
__tablename__ = 'table1'
class Table2(MyDatasetBase, db.Model):
__tablename__ = 'table2'
class ForeignTableClass(db.Model):
__tablename__ = 'ForeignTable'
id = db.Column(db.Integer, db.ForeignKey('table1.fkeyid'), db.ForeignKey('table2.fkeyid'), primary_key=True)
name = db.Column(db.String)
这一切都行得通,但其中一些数据集包含很多表,我觉得必须有一种更有效的方法来完成其中一些事情。
有没有办法为从 MyDatasetBase 派生的每个表显式定义一个类?如果有,这是否会导致外键问题,在 ForeignTableClass 我必须将 id 定义为上面列出的每个表的外键?
【问题讨论】:
标签: python sqlalchemy flask flask-sqlalchemy