Python SQLAlchemy:使用动态创建的名称插入到表中

Python SQLAlchemy:使用动态创建的名称插入到表中,python,sqlalchemy,Python,Sqlalchemy,我有一个表,其名称必须动态创建。以下是创建表的方式: def创建数据表(表名称): meta=Base.metadata 我的桌子( 表名称,元, 列('id',BigInteger,主键=True,null=False), 列('file_name',String(250),null=False) ) meta.create_all(引擎,[我的_表]) 这个很好用。但是,在插入行时,我还需要将表名作为变量传递,这就是我遇到问题的地方 以下是我尝试过的东西: def插入数据(表名称、数据):

我有一个表,其名称必须动态创建。以下是创建表的方式:

def创建数据表(表名称):
meta=Base.metadata
我的桌子(
表名称,元,
列('id',BigInteger,主键=True,null=False),
列('file_name',String(250),null=False)
)
meta.create_all(引擎,[我的_表])
这个很好用。但是,在插入行时,我还需要将表名作为变量传递,这就是我遇到问题的地方

以下是我尝试过的东西:

def插入数据(表名称、数据):
meta=Base.metadata
我的桌子(
表名称,元,
列('id',BigInteger,主键=True),
列('文件名',字符串(250))
)
conn=引擎连接()
conn.execute(my_table.insert(),数据)
这会导致一个错误,告诉我元数据中已经定义了我的_表

为了避免这种情况,我尝试创建一个类:

class my_表(基本):
__tablename_uuu=“”
id=列('id',字符串(50),主键=True)
文件名=列('文件名',字符串(250))
定义初始化(self、表名、id、文件名):
__表名=表名
self.id=id
self.file\u name=文件名
同样,我能够创建表而没有任何问题,但是SQLAlchemy不允许我在尝试插入行时将表名作为参数传递


理想情况下,我希望使用第一种方法。感谢您的帮助

SQLAlchemy
元数据
对象通过属性拥有所有表的映射。即:

表对象的字典,键入它们的名称或“表键”

您不想直接或通过声明性映射重新创建
,只需从
MetaData.tables
按名称访问它即可。例如:

Base.metadata.tables[表名称]
您的
insert_data()
实现可以是:

def插入数据(表名称、数据):
my_table=Base.metadata.tables[表名称]
conn=引擎连接()
conn.execute(my_table.insert(),数据)

还有一个问题-如果我的程序重新启动,并且该表以前是使用上述方法创建的,则使用用于查询的
table\u data=Base.metadata.tables[table\u name]
无法找到该表,即使该表已经存在。有什么建议吗?谢谢@我自己找到了解决办法;它只需添加
Base.metadata.reflect(引擎)
。谢谢