在Flask中动态创建和持久化模型 - Sqlalchemy

5 投票
1 回答
1821 浏览
提问于 2025-04-18 08:04

我正在写一个使用Flask的网页应用。我需要根据用户输入创建一个模型,并根据这个模型生成一个表格。此外,我还希望在重启网页服务器后能够继续使用这个模型。有什么好的方法可以做到这一点呢?

我正在使用Flask和SQLAlchemy来处理数据库。

1 个回答

2

你将会处理很多动态查询哦。

你有没有见过INFORMATION_SCHEMA.tablesINFORMATION_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表对象。

撰写回答