这是一个简单的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)
显然不起作用。 任何建议表示赞赏
答案 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']