【发布时间】:2019-06-22 11:03:20
【问题描述】:
我从 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
如果我在函数get_answers 中导入connection 模块一切正常
示例 #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
【问题讨论】:
-
不,这不会发生。您会收到该错误的唯一原因是您在
get_answers()函数中重新定义了connection。 -
或循环导入。
-
@Mathias 不,循环导入会导致 ImportError。
-
仅供参考,这开始发生在 Python3 和 Django2.1 上。我正在检查我是否遗漏了什么。我也在运行我的 docker
-
@DanielRoseman 哎呀真 :-)
标签: python django python-3.5 django-2.1