database.py ファイルでまったく異なるモデルを使用して 2 つのデータベースを初期化したいと考えています。
データベース.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()
および 2 つのモデル構造:
models.py
class MyModel(Base):
pass
models2.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)
2番目のinit関数でインポートを変更すると機能します
def init_db2():
from models2 import *
LogBase.metadata.create_all(bind=engine2)
しかし、警告があります:
database.py:87: SyntaxWarninyntaxWarning: import * モジュール レベルでのみ許可
すべてが正常に動作し、データベースは初期化されていますが、警告は何か問題があることを示しています。
最初の試行が正しくない理由を誰かが説明できれば、私は感謝します。ありがとう。