python - mysql 查询函数在 python shell 中工作,但在 python 中运行时出现 ImproperlyConfigured 错误

标签 python mysql sql django

我正在练习在 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/

相关文章:

python - 在 Windows Server 2019 上,通过 cgi/Apache 调用的 pyttsx3 生成空的 wav 文件

python - 在 3 点之间绘制箭头

python - 使用 django 并扭曲在一起

php - 使用标题确定 SphinxQL 中可能的类别

php - Mysql php 和 Objective c 之间的通信

mysql - 在 Laravel 4 迁移中添加 MySQL 地理空间点列

sql - 根据小时过滤窗口函数

mysql - Rails 检查是否可以删除具有外键约束的对象

javascript - 带有 Folium 的 Python : How can I embed a webpage in the popup?

sql - 从 sql 中的字符串中删除和替换多个字符(空格、连字符、括号、句点)