3

私は 1 つのファイルで定義のグループを作成しようとしているので、Python でスクリプトを作成したいときはいつでもそれらをインポートできます。

私はこれを試しました:

def get_dblink( dbstring):
"""
Return a database cnx.
"""
global psycopg2 
try
    cnx = psycopg2.connect( dbstring)
except Exception, e:
    print "Unable to connect to DB. Error [%s]" % ( e,)
    exit( )

しかし、私はこのエラーを受け取ります: グローバル名 'psycopg2' が定義されていません

私のメインファイルscript.pyで

私は持っている:

import psycopg2, psycopg2.extras
from misc_defs import * 

hostname = '192.168.10.36'
database = 'test'
username = 'test'
password = 'test'

dbstring = "host='%s' dbname='%s' user='%s' password='%s'" % ( hostname, database, username, password)

cnx = get_dblink( dbstring)

誰か手を貸してくれませんか?

4

1 に答える 1

7

import psycopg2最初のスニペットで必要なだけです。

必要な場合は、2 番目のスニペットで「また」インポートしても問題ありません (Python は、モジュールが 1 回だけインポートされるようにします)。これを使おうとするglobalsのは悪い習慣です。

したがって、すべてのモジュールの上部に、importその特定のモジュール内で使用されるすべてのモジュールがあります。

また、(ワイルドカードを使用した場合) は一般的に嫌われていることに注意してfrom x import *ください。名前空間が乱雑になり、コードが明示的ではなくなります。

于 2010-03-24T19:30:41.740 に答える