0

これは私のconfiguration.pyです

import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
import psycopg2

db_username = 'postgres'
db_password = 'postgres'
db_host = 'localhost'
db_name = 'testdb6'

engine = create_engine('postgresql+psycopg2://' + db_username + ':' + db_password + '@' + db_host +'/' + db_name,echo=True)

Session = sessionmaker()

Session.configure(bind=engine)

sess = Session()

Base = declarative_base()

sess 変数をインポートしようとするとエラーが発生します。

たとえば、別のモジュールでconfiguration.sessを実行しようとすると、sess is not an attributeエラーが発生します。しかし、configurations.Base は正常に動作します。

どこが間違っていますか?

4

1 に答える 1

1

使用しているライブラリは、次の規則に従っていると思います

  1. メソッドと属性が小文字で始まっている
  2. クラスは大文字で始まります。

これを念頭に置いて、変数はこの規則に従っていません (これは問題ではなく、エラーではありませんが、規則に従うのに役立つ場合があります)。

あなたの質問に来ます: sess は、クラス Session() の新しく作成されたオブジェクトを参照しています。インポート時に存在しない可能性があります。一方、 Base はメソッドのように見えるため、メソッドをインポートしています。

そして、コードを読み直した後: 行sess = Session()は、クラス セッションの新しいオブジェクトを作成しようとしますが、これはあなたが望むものではありません。を使用しsess = Sessionます。

于 2013-09-23T10:03:59.137 に答える