Sqlalchemy - 自动实例化所有表

时间:2017-03-24 19:13:45

标签: python mysql sqlalchemy

这是一个简单的sqlalchemy任务,我尝试创建数据库中存在的每个表的实例:

from sqlalchemy import MetaData, create_engine, Table
engine = create_engine("here my engine details...")
metadata = MetaData()

如果我输入engine.table_names(),我可以看到所有表格的名称,例如['indicators', 'prices', 'scripts']

我通常会创建每个实例,如下所示:

scripts = Table('scripts', metadata, autoload = True, autoload_with=engine)
indicators = Table('indicators', metadata, autoload = True, autoload_with=engine)
prices = Table('prices', metadata, autoload = True, autoload_with=engine)

但有没有办法创建Table实例而不用明确编写它们?

这样做:

tables = engine.table_names()
for table in tables:
    table = Table( table , metadata, autoload = True, autoload_with=engine)

显然不起作用。 任何建议表示赞赏

1 个答案:

答案 0 :(得分:4)

你可以做到这一点。此代码将为您提供表格列表:

my_tables = [Table(table,metadata,autoload=True,autoload_with=engine) for 
             table in engine.table_names()]

如果您更喜欢字典,请执行以下操作:

my_tables = {table:Table(table,metadata,autoload=True,autoload_with=engine) 
             for table in engine.table_names()}

使用字典,在访问字典元素时可获得O(1) lookup个表:

my_tables['indicators']