2016-05-31 11 views
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カーソル、共通関数のファイルがある場合、ファイル/インポートをどのように構造化する必要がありますか?

答えて

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) 

このコードを試してみてください

+0

興味深い!だから、おそらく私の現在の構造が間違った方法(編集を参照)であるように思えます。私はそれらの答えを見て、より良いアプローチを見つけることができるかどうかを見ていきます。 –

関連する問題