将外部 mysql 数据库连接到 django 应用程序并查询它
Posted
技术标签:
【中文标题】将外部 mysql 数据库连接到 django 应用程序并查询它【英文标题】:Connecting an external mysql database to django application and querying it 【发布时间】:2017-11-24 20:32:57 【问题描述】:我需要将数据从外部 mysql 数据库提取到我的应用程序。我已在 settings.py 文件中将以下几行添加到我的数据库字典中。
'cust':
'ENGINE': 'django.db.backends.mysql',
'NAME': 'cust_data',
'HOST': '',
'USER': '',
'PASSWORD': ''
引擎名称对吗?我已经添加了所有其他详细信息。
现在是这个吗?我现在如何从这个数据库中获取数据?我可以在我的应用程序views.py 中简单地使用SQL 查询吗?
现在当我使用以下命令进入 shell 时
python manage.py shell
当我对 MySQL 数据库执行查询时,它不起作用。我确定我在这里遗漏了一些东西。
我被困在这里,我在这里做错了什么?如何运行命令来访问上述数据库中特定表中的数据?
【问题讨论】:
【参考方案1】:您的外部 MySQL 数据库似乎没有映射到您的 Django 模型。在这种情况下,您必须使用 django.db.connection 对象来连接数据库并直接执行原始 SQL 查询。您可以在views.py 中使用查询结果,但最好考虑views.py 是否是执行查询操作的正确位置。
要在 python shell 中测试查询,你可以这样尝试:
>>> from django.db import connections
>>> cursor = connections['cust'].cursor() # Replace 'cust' to other defined databases if necessary.
>>> cursor.execute("YOUR SQL QUERY HERE")
>>> cursor.fetchall()
对于 fetchall() 方法,它应该以元组形式返回您的结果。
您可以参考here官网的更多信息。
【讨论】:
这看起来很完美,所以在配置完我的settings.py之后,我可以直接使用Lee提到的上述代码行吗?还是我需要配置其他东西? 是的。您可以在shell中尝试上面提到的代码(通过命令python manage.py shell
进行shell),看看它是否可以从您的数据库中获取结果。如果它返回预期的结果,您可以简单地在 py 文件中使用相同的代码。
好的,谢谢【参考方案2】:
常量变量错误。您必须声明 DATABASES
变量。
在你的 settings.py 中
DATABASES =
'default':
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'myhost'
只需将占位符替换为正确的值即可。
【讨论】:
我认为您在这里弄错了,我的应用程序使用多个数据库,我已经有一个默认数据库集,这是我的第二个数据库。有关详细文档,请参阅此链接docs.djangoproject.com/en/1.11/topics/db/multi-db以上是关于将外部 mysql 数据库连接到 django 应用程序并查询它的主要内容,如果未能解决你的问题,请参考以下文章
如果 mysql 数据库驻留在 wamp 服务器中,如何将 django 项目连接到 mysql 数据库?
如何使用 Windows 将我的 Django 项目连接到 MySql?
将 Django 连接到 MySQL 错误“您安装了 mysqlclient 吗?”
将 Django 与 Docker 一起使用时出错 - “无法连接到 '127.0.0.1' (111) 上的 MySQL 服务器”)