我想在我的 database.py 文件中初始化两个具有完全不同模型的数据库。
数据库.py
engine1 = create_engine(uri1)
engine2 = create_engine(uri2)
session1 = scoped_session(sessionmaker(autocommit=False,autoflush=False,bind=engine1))
session2 = scoped_session(sessionmaker(autocommit=False,autoflush=False,bind=engine2))
Base = declarative_base(name='Base')
Base.query = session1.query_property()
LogBase = declarative_base(name='LogBase')
LogBase.query = session2.query_property()
和两个模型结构:
模型.py
class MyModel(Base):
pass
模型2.py
class MyOtherModel(LogBase):
pass
返回到我想在导入模型后创建/初始化数据库的 database.py
# this does init the database correctly
def init_db1():
import models
Base.metadata.create_all(bind=engine1)
# this init function doeas not work properly
def init_db2():
import models2
LogBase.metadata.create_all(bind=engine2)
如果我在第二个初始化函数中更改导入它确实有效
def init_db2():
from models2 import *
LogBase.metadata.create_all(bind=engine2)
但有一个警告:
database.py:87: SyntaxWarninyntaxWarning: import * 只允许在模块级别
一切正常,我已经初始化了数据库,但是警告告诉我,它有问题。
如果有人可以解释为什么第一次尝试不正确,我将不胜感激。谢谢。