0

接続プールにsqlalchemyを使用していますが、エンジンオブジェクトを他のモジュールで使用できるようにしたいです。他のモジュールが必要とするユーティリティ用のモジュールを作成しました。次のようになります。

from sqlalchemy import [...]

_engine = create_engine(url)
_meta = MetaData()
_meta.bind = _engine

def get_meta():
       return _meta

def get_engine():
       return _engine

以前、先頭にアンダースコアを付けずにこれを実行しようとしましたが、機能しませんでした。先頭の下線はPythonのプライベート変数の従来のスタイルにすぎないという印象を受けましたが、コードの解釈方法に影響を与える可能性があるようです。とにかく、私は特定のライブエンジンオブジェクト(データベース接続プールへのアクセスを制御する)を他のモジュールで利用できるようにしようとしています。そのためのベストプラクティスを知りたいのですが、ありがとうございます。

4

1 に答える 1

4

PEP008から:

_single_leading_underscore:弱い「内部使用」インジケータ。たとえばfrom M import *、名前がアンダースコアで始まるオブジェクトはインポートされません。

したがって、通訳者は、先頭にアンダースコアが付いている識別子を、付いていない識別子とは異なる方法で処理します。

于 2012-08-28T06:36:53.003 に答える