python,flask和sqlalchemy的新手。請幫忙。用Flask-Sqlalchemy動態創建/更新/刪除表格
我正在用燒瓶寫一個小應用程序。我已經定義了一些模型爲:
class Field(db.Model):
__tablename__ = 'fields'
id = db.Column(db.Integer, db.Sequence('FIELDS_SEQ'), primary_key=True)
name = db.Column(db.String(120), nullable=False)
position = db.Column(db.Integer)
# a field has only one type
type_id = db.Column(db.Integer, db.ForeignKey(FieldType.id))
# a field only belongs to one table
table_info_id = db.Column(db.Integer, db.ForeignKey('tables_info.id'), unique=True)
_create_db_sequence('FIELDS_SEQ')
class TableInfo(db.Model):
__tablename__ = 'tables_info'
id = db.Column(db.Integer, db.Sequence('TABLES_INFO_SEQ'), primary_key=True)
name = db.Column(db.String(120), unique=True, nullable=False)
# a table can have a lot of fields
fields = db.relationship(Field, backref='table_info', lazy='joined')
# a table only belongs to one department
department_id = db.Column(db.Integer, db.ForeignKey('departments.id'))
_create_db_sequence('TABLES_INFO_SEQ')
所以我有一個表格將收集TableInfo的名稱屬性。現在,我如何動態地 - 在運行時 - 創建一個只有一個列定義(id)的name屬性的空表。一旦創建了表格,我將使用另一個表格來收集字段/列名稱。再次,我想動態地將這些列添加到表中。由於此表及其列不會基於上述預定義的模型,因此如何在應用程序可以與它交互的方式下在運行時創建表和列?我讀過flask-sqlalchemy使用的聲明性基礎,它要求在映射表創建之前定義模型。我可以在flask-sqlalchemy環境中即時創建表格嗎?謝謝。
看起來您的表格結構可能過於複雜。雖然這是可以理解的,但您可能會遇到一個用例,您需要更多的專欄,雖然我確信這可以通過SQL鍊金術實現,但它最終會導致一個hacky或非ORM解決方案。您可以更輕鬆地調查非SQL解決方案,該解決方案可以動態創建列。 –
@F Boucaut不幸的是,我現在只有甲骨文才能與之合作。你可以通過sqlalchemy詳細說明這可能嗎? – okyere