0

データベース設定を含む .py ファイルがあります (connection.py と呼びます)。connection.py に含まれる変数を views.py にインポートしようとしています。ただし、変数はインポートされていません。

私のviews.pyには次のものがあります:

from connection import *

def location_where_connection_variables_needed(request, some_id):

 conn = psycopg2.connect(conn_string)
 cursor = conn.cursor()

次に、views.py スクリプトで connection.py の変数を使用します。しかし、変数はviews.pyにインポートされていません。connection.py をメイン フォルダーに配置しました (つまり、connection.py はアプリのフォルダーと同じフォルダーにあります)。これは、これを配置する正しい場所ですか? それとも、根本的に間違ったことをしていますか?

編集:インポートされていないということは、エラーはまったく発生していませんが、views.py のコードが実行されていないため、変数がインポートされていません。views.py に接続変数を手動で追加すると、すべて正常に動作します。

接続.py

conn_string = "host='localhost' dbname='test' user='postgres' password='pwd'"
4

2 に答える 2

2

定数値の場合、私は通常、それらを というファイルに入れ、constants.pyそれらの値をすべて大文字で指定します。これは Python の規則です。したがって、「connection.py」を「constants.py」に置き換えます。

# constants.py
CONN_STRING = "host='localhost' dbname='test' user='postgres' password='pwd'"


# views.py
from constants import CONN_STRING

def location_where_connection_variables_needed(request, some_id):
    conn = psycopg2.connect(CONN_STRING)
    cursor = conn.cursor()

また、manage.py によってクリアされない可能性のある .pyc ファイルをすべてクリアしてください。そのため、期待どおりに動作しないことがあります。またimport *、暗黙的ではなく (何をインポートしているかを確認できない)、名前の競合が発生しやすいため、近づかないようにすることもできます。

于 2013-08-20T20:44:01.253 に答える
0

ローカル変数の代わりにグローバル変数を試すことができます。として使用します

global conn_string = "host='localhost' dbname='test' user='postgres' password='pwd'"
于 2013-08-20T20:20:12.677 に答える