Нубишский вопрос, чтобы быть уверенным. Я попытался переместить некоторый общий код в отдельный модуль и использовать код в качестве импортированной функции. Код делает запрос MySQL через MySQLdb. Когда функция является частью основного скрипта, она работает просто отлично. Когда я импортирую функцию из отдельного модуля, функция завершается ошибкой, потому что объект курсора больше не определен. Есть ли способ импортировать функции без определения отдельного объекта курсора только для импортируемой функции?
Вот кодированный пример. Это работает:
import MySQLdb
#from mod2 import lookup_value
def get_db_connection(database_name):
db = MySQLdb.connect('localhost', 'user', 'pswrd', database_name)
cur = db.cursor()
return db, cur
def lookup_value(user_name):
query = "SELECT COUNT(*) FROM x_user_%s" % (user_name)
cur.execute("%s" % (query))
return cur.fetchone()
db_name = 'mg_test' # database name
user_name = 'test' # name of a specific table in the database
db, cur = get_db_connection(db_name)
value = lookup_value(user_name)
Когда я перемещаю код для lookup_value во второй файл и импортирую его ('из mod2 import lookup_value'), код завершается ошибкой, поскольку объект курсора не определен. Импортированная версия lookup_value работает, только если я создаю объект курсора для его использования. Это кажется очень неэффективным. Как лучше всего решить эту проблему?