从函数内访问全局游标

时间:2016-05-31 05:04:06

标签: python python-2.7 mysql-python

这样可行(为简洁起见,省略了一些代码):

# main.py
cursor = db.cursor()
cursor.execute('foo')

就像这样:

# other.py
def do_something(script, cursor):
  cursor.execute(script)

# main.py
from other import do_something
cursor = db.cursor()
do_something('foo', cursor)

但是(据我所知)"更低"功能范围应该能够访问"更高的" (全局?)范围的游标 - 为什么我需要将游标作为参数传递给我的函数?所以我尝试了这个:

# other.py
def do_something(script):
  cursor.execute(script)

# main.py
from other import do_something
cursor = db.cursor()
do_something('foo')

返回:

NameError: global name 'cursor' is not defined

我认为"可能对光标运行查询是一个写操作,而不是读取"并试过:

# other.py
def do_something(script):
  global cursor
  cursor.execute(script)

# main.py
from other import do_something
cursor = db.cursor()
do_something('foo')

同样的错误。我错过了什么?

编辑:听起来像#34;如何在不同模块之间创建全局变量名称"这是错误的问题。正确的问题 - 如果我有一个主处理程序,一个SQL游标和一个常用函数文件,我应该如何构建我的文件/导入?

1 个答案:

答案 0 :(得分:0)

试试这段代码

# other.py
def do_something(script):
  global cursor
  cursor.execute(script)

# main.py
from other import do_something
import other
  other.cursor = db.cursor()
  do_something(script)

我的英语不好,所以你可以阅读这些答案