我自己创建了一个Connector
类,它从给定位置动态加载的python文件导入Table
类。
我有两个数据库目标-一个由config指定,另一个在内存中
class Connector(object):
_target_module = "plugin.database"
def __init__(self, driver, connection_string, **kwargs):
self._engines = {
"primary": create_engine(f"{driver}://{connection_string}", **kwargs),
"memory": create_engine(f"sqlite:///:memory:"),
}
self._setup_tables()
def _setup_tables(self):
importable_classes = import_classes(...)
# initialize classes
logger.debug("Initializing database plugin classes: %s", importable_classes)
for cls in importable_classes:
cls.metadata.create_all(bind=self._engines[cls.__database__])
问题是,即使每个.create_all()
调用都指定了bind
,SQLAlchemy似乎总是在所有引擎中创建所有表。
我错过了什么还是故意的
谢谢您抽出时间,
丹尼尔
根据文件,metadata.create_all将
但是,它接受一个
tables
参数,该参数是因此,您可以将表对象列表传递给
cls.metadata.create_all
,以确定为特定引擎创建哪些表相关问题 更多 >
编程相关推荐