私のデザインでは、それぞれの "プロジェクト"ごとに別々のSQLiteファイルが必要です。私はSQLAlchemyプーリングのドキュメントをより慎重に読んでいます。私の推測は今私が馬鹿にしたくないということですまったくプールしていますが、これは実際には各プロジェクトの個別の接続エンジンです。SQLAlchemy接続、プーリング、SQLite
この場合、私はエンジンを作成するときに、慣習で指定されたファイルに接続するか、新しいSQLiteファイルを作成してスキーマテンプレートを提供しますか?
私のデザインでは、それぞれの "プロジェクト"ごとに別々のSQLiteファイルが必要です。私はSQLAlchemyプーリングのドキュメントをより慎重に読んでいます。私の推測は今私が馬鹿にしたくないということですまったくプールしていますが、これは実際には各プロジェクトの個別の接続エンジンです。SQLAlchemy接続、プーリング、SQLite
この場合、私はエンジンを作成するときに、慣習で指定されたファイルに接続するか、新しいSQLiteファイルを作成してスキーマテンプレートを提供しますか?
ええと、何ですか?接続プールには、同じ(データベース)サーバーへの多数の接続が含まれています。新しい接続を確立するには時間がかかりますので、多くの短寿命プロセスを使用する場合は、同じデータベースを使用すると、既に確立された接続のプールを持つと便利です。プロセスは、新しい接続を開くときに待つことなく、接続をチェックアウトし、その処理を行い、返すことができます。いずれの場合においても
、すべての接続は、URIがcreate_engine
まず、いくつかの語彙に渡さによって与えられ、同じデータベースにアクセスしてください。 SQLAlchemyは、MetaDataというオブジェクトを持つスキーマを定義します。このオブジェクトには、テーブルや他のデータベースエンティティを表すオブジェクトが含まれています。メタデータオブジェクトはの場合はエンジンに「バインドされています」というように「プール」と考えることができます。
標準スキーマを作成し、複数のデータベースにそれを使用するには、1つのメタデータオブジェクトを作成し、各エンジンは、あなたがに接続するデータベースであること、いくつかのエンジンでそれを使用したいと思います。ここでは、インタラクティブなiPythonのプロンプトからの例を示します。これらのSQLiteエンジンはそれぞれ異なるメモリ内のデータベースに接続することに注意してください。接続1と接続2は、同じデータベースに接続しないでください:
In [1]: from sqlalchemy import *
In [2]: metadata = MetaData()
In [3]: users_table = Table('users', metadata,
...: Column('id', Integer, primary_key=True),
...: Column('name', String))
In [4]: connection1 = create_engine('sqlite:///:memory:')
In [5]: connection2 = create_engine('sqlite:///:memory:')
In [6]: ## Create necessary tables
In [7]: metadata.create_all(bind=connection1)
In [8]: metadata.create_all(bind=connection2)
In [9]: ## Insert data
In [10]: connection1.execute(
users_table.insert(values={'name': 'Mike'}, bind=connection1))
In [11]: connection2.execute(
users_table.insert(values={'name': 'Jim'}, bind=connection2))
In [12]: print connection1.execute(users_table.select(bind=connection1)).fetchall()
[(1, u'Mike')]
In [13]: print connection2.execute(users_table.select(bind=connection2)).fetchall()
[(1, u'Jim')]
あなたが見ることができるように、私は2つのSQLiteデータベースに接続し、私のmetedataオブジェクトに格納されている共通のスキーマを使用して、各上のステートメントを実行します。私があなただったら、create_engineメソッドを使用するだけで、プールの心配はありません。最適化する時間が来たら、create_engineへの引数を使用してデータベースがどのように接続されているかを微調整できます。