[英]Python3 use imported module in function django
我從Djanjo 1.8升級到2.1
我注意到當我嘗試使用導入的模塊時,找不到該模塊
例子1
from var_dump import var_dump
from django.db import connection
def get_available_id():
with connection.cursor() as cursor:
query = """SELECT
*
FROM
`stackoverflow`
;"""
cursor.execute(query)
row = cursor.fetchone()
return row
var_dump(get_available_id())
這導致NameError: name 'connection' is not defined
全轉儲
root@fbb4988d3d17:/var/www/api.domain.com# python manage.py shell < sql/import.py
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.5/dist-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.5/dist-packages/django/core/management/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.5/dist-packages/django/core/management/base.py", line 316, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.5/dist-packages/django/core/management/base.py", line 353, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python3.5/dist-packages/django/core/management/commands/shell.py", line 92, in handle
exec(sys.stdin.read())
File "<string>", line 27, in <module>
File "<string>", line 8, in get_available_id
NameError: name 'connection' is not defined
如何將connection
模塊導入功能get_answers
一切正常
范例#2
from var_dump import var_dump
def get_available_id():
from django.db import connection
with connection.cursor() as cursor:
query = """SELECT
*
FROM
`stackoverflow`
;"""
cursor.execute(query)
row = cursor.fetchone()
return row
var_dump(get_available_id())
這可行。
我該怎么做以確保示例#1可與全局導入一起使用。
我正在運行像這樣的代碼python manage.py shell < sql/import.py
通過將要嘗試運行的類移到單獨的文件中,可以解決此問題。
#class_a.py
import re
class A:
def word_to_list(str):
words = re.split("(\s+)", str)
return words
a = A()
a.word_to_list('bob is your uncle')
運行python manage.py shell < sql/class_a.py
導致NameError: name 're' is not defined
解決方案是
#class_a.py
import re
class A:
def word_to_list(str):
words = re.split("(\s+)", str)
return words
然后
#runner.py
from class_a import A
a = A()
a.word_to_list('bob is your uncle')
運行python manage.py shell < sql/runner.py
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.