python, обращаясь к psycopg2, образует def? - PullRequest
2 голосов
/ 24 марта 2010

Я пытаюсь создать группу определений в одном файле, поэтому я могу просто импортировать их, когда захочу создать скрипт на 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)

Кто-нибудь может мне помочь?

1 Ответ

5 голосов
/ 24 марта 2010

Вам просто нужно import psycopg2 в вашем первом фрагменте.

Если вам нужно, нет проблем с тем, чтобы «также» импортировать его во второй фрагмент (Python гарантирует, что модули импортируются только один раз). Попытка использовать globals для этого является плохой практикой.

То есть : в верхней части каждого модуля import каждый модуль, который используется в этом конкретном модуле.

Также: обратите внимание, что from x import * (с подстановочными знаками) обычно не одобряется: он загромождает ваше пространство имен и делает ваш код менее явным.

...