在Flask中动态创建和持久化模型 - Sqlalchemy
我正在写一个使用Flask的网页应用。我需要根据用户输入创建一个模型,并根据这个模型生成一个表格。此外,我还希望在重启网页服务器后能够继续使用这个模型。有什么好的方法可以做到这一点呢?
我正在使用Flask和SQLAlchemy来处理数据库。
1 个回答
2
你将会处理很多动态查询哦。
你有没有见过INFORMATION_SCHEMA.tables
和INFORMATION_SCHEMA.columns
是怎样的?
基本上,你会用到这些,或者在你的数据库里创建一份这些表的克隆。
然后你会从这些表中读取信息,动态地做一些事情,比如这样:
from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey
def make_metadata(source):
...
return MetaData(...)
def make_column(column_definition):
return Column(....)
all_table_definitions = ... # array of records from your custom_tables
all_column_definitions = ... # map of table name to array of column definition for your tables from custom_columns
my_tables = {}
for t in all_table_definition:
columns = [make_column(c) for c in all_column_definitions[t.name]]
new_table = Table(t.table_name, make_metadata(t.metadata), columns*)
之后,你会得到一个数组all_table_definitions
,里面包含了你所有表的描述,还有my_tables
,它是用来查询数据的ORM表对象。