0
内からグローバルカーソルへのアクセス(いくつかのコードは、簡潔にするためommited):これは大丈夫働く機能
# other.py
def do_something(script, cursor):
cursor.execute(script)
# main.py
from other import do_something
cursor = db.cursor()
do_something('foo', cursor)
しかし、(私はそれを理解して)「下」スコープ:これを行うと
# main.py
cursor = db.cursor()
cursor.execute('foo')
関数の "上位"(グローバル?)スコープカーソルにアクセスできる必要があります - 関数の引数としてカーソルを渡す必要があるのはなぜですか?返し
# 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')
同じエラーです。私は何が欠けていますか?
EDIT:「異なるモジュール間で変数名をグローバルにするにはどうすればよいですか」というのは間違った質問です。適切な質問 - プライマリハンドラ、SQLカーソル、共通関数のファイルがある場合、ファイル/インポートをどのように構造化する必要がありますか?
興味深い!だから、おそらく私の現在の構造が間違った方法(編集を参照)であるように思えます。私はそれらの答えを見て、より良いアプローチを見つけることができるかどうかを見ていきます。 –