【问题标题】:mysql query function works in python shell but ImproperlyConfigured error when run in pythonmysql 查询函数在 python shell 中工作,但在 python 中运行时出现错误配置错误
【发布时间】:2023-03-10 22:25:01
【问题描述】:

我正在 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:请求设置 DATABASES,但未配置设置。您必须在访问设置之前定义环境变量 DJANGO_SETTINGS_MODULE 或调用 settings.configure()。

有没有什么方法可以在views.py 或其他python 文件中运行此命令,而不使用inspectdb 将我的数据库放入模型中?

【问题讨论】:

  • 如果您需要任何其他信息,请告诉我

标签: python mysql sql django


【解决方案1】:

好吧,Django 不是这样工作的。 当您使用 django shell 执行指令集时,它知道在哪里查找 db,因为 settings.py 文件正在由 django.setup() 在后台加载,该文件负责填充应用程序注册表。 但是当您在一般 python shell 中使用它时,它对 settings.py 文件一无所知。 它只知道执行您当前的指令集。 它不加载 settings.py 文件。

【讨论】:

  • 我该怎么做才能在 python 文件中运行查询?我想在用户给我一个蛋白质的 id 后查询数据库。然后我想在 html 页面上显示这个。无论如何在views.py中运行这个查询?我会使用模型,但我的数据库太大了,我等了大约一个小时,它完成了 3%。 @丹麦语
  • 您可以使用表格。然后在后端使用 request.GET.get('id') 方法提取 id 并执行相同的查询。我认为 connection.cursor() 会给你相同的结果,所以不需要使用“默认”。将通过 cursor.fetchone() 接收到的 dict 传递到前端并在那里提取结果或首先在终端中打印结果以了解即将发生的事情以及如何在模板中提取它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-07
  • 1970-01-01
  • 2012-07-30
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多