我正在写一个flask webapp。我需要能够创建一个基于用户输入的模型,并根据模型创建一个表。此外,我还希望以后能够使用该模型(在重新启动web服务器后)。做这件事的最好方法是什么?
你将会有很多动态查询。
你见过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
和包含ORM表对象的数组my_tables
来查询数据