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



我正在写一个flask webapp。我需要能够创建一个基于用户输入的模型,并根据模型创建一个表。此外,我还希望以后能够使用该模型(在重新启动web服务器后)。做这件事的最好方法是什么?

你将会有很多动态查询。

你见过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和包含ORM表对象的数组my_tables来查询数据

相关内容

最新更新