Python,如何在函数中访问psycopg2?
我想在一个文件里写一组函数,这样我就可以在需要写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 个回答
7
你只需要在第一个代码片段里加上 import psycopg2
。
如果需要的话,在第二个代码片段里再加一次也没问题(Python会确保模块只会被导入一次)。用 globals
来处理这个问题是不好的做法。
所以:在每个模块的最上面,import
所有在这个模块中用到的模块。
另外:注意 from x import *
(带星号的导入)通常是不推荐的:这样会让你的命名空间变得杂乱,代码也不够清晰。