我正在练习在 django 中使用 mysql,并且想要对我在 settings.py 中设置的数据库运行一个简单的查询。我已连接到数据库,并且可以在 manage.py shell 中正常运行查询。但是,当我在 python 文件中运行相同的代码时,它不起作用。有谁知道为什么查询在 python 文件中不起作用?
query :
from django.db import connections
def query(id):
c = connections['default'].cursor()
c.execute("SELECT * FROM `peptides_proteins_000005 WHERE protein_id=%s;",[id])
rows = c.fetchone()
return rows
print(query(4519))
在 shell 中,我将得到一行包含我想要的信息,但是,当在 python 文件中运行时,我收到此错误:
django.core.exceptions.ImproperlyConfigured:请求设置数据库,但未配置设置。在访问设置之前,您必须定义环境变量 DJANGO_SETTINGS_MODULE 或调用 settings.configure()。
有没有办法在views.py或其他python文件中运行此命令,而不使用inspectdb将我的数据库放入模型中?
最佳答案
Django 不是这样工作的。 当您使用 django shell 执行指令集时,它知道在哪里查找 db,因为 django.setup() 在后台加载 settings.py 文件,该文件负责填充应用程序注册表。 但是当你在一般的 python shell 中使用它时,它不知道有关 settings.py 文件的任何信息。 它只知道执行当前的指令集。 它不会加载 settings.py 文件。
关于python - mysql 查询函数在 python shell 中工作,但在 python 中运行时出现 ImproperlyConfigured 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56778756/