我有一个用SQLAlchemy声明式定义的简单表:
Base = declarative_base()
class MyTable(Base):
__tablename__ = 'mytable1'
row_id = Column(INT, primary_key=True)
another_column = Column(CHAR(10))
我想创建一组表格,其名称为:
table_names = ('mytable1', 'mytable2', 'mytable3', 'mytable4')
是否有一种简单的方法来创建这组表,所有表都具有相同的列定义(但每个都有自己的名称),而不重复表定义?
答案 0 :(得分:3)
字典是最好的方式。也许是这样的事情:
table_dict = {}
for i in range(4): # Create
table_name = "mytable" + str(i)
table_dict[table_name] = MyTable(table_name)
for i in range(4): # Query
session.query(table_dict["mytable" + str(i)])
这样的事情可能就是你正在寻找的东西。这也可以让你自动创建字典键,就像在for循环中一样。
编辑:我假设你正在制作MyTable
类的实例,但再次看起来似乎并非如此。我不知道SQLAlchemy的具体细节,但我猜你是想要使用MyTable
函数创建__init__
个实例。
编辑编辑:如果要创建多个表对象,可以创建一个函数来生成并返回一个新类。也许是这样的:
Base = declarative_base()
def TableCreator(tablename):
class MyTable(Base):
__tablename__ = tablename
row_id = Column(INT, primary_key=True)
another_column = Column(CHAR(10))
return MyTable
然后你可以用mytable1 = TableCreator("mytable1")
调用它。