将外部mysql数据库连接到django应用程序并进行查询
我需要从外部MySQL数据库将数据提取到我的应用程序。我在settings.py文件中将以下几行添加到了我的数据库字典中。将外部mysql数据库连接到django应用程序并进行查询
'cust': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'cust_data',
'HOST': '',
'USER': '',
'PASSWORD': ''
}
发动机名称正确吗?我已经添加了所有其他细节。
现在是这样吗?我现在如何从这个数据库获取数据?我可以简单地在我的应用程序views.py中使用SQL查询吗?
现在,当使用以下命令
python manage.py shell
当我执行一个查询到MySQL数据库我进入外壳,这是行不通的。我相信我在这里失去了一些东西。
我被困在这里,我在这里做错了什么?我如何运行一个命令来访问上面数据库中某个表的数据?
看起来你的外部MySQL数据库没有映射到你的Django模型。在这种情况下,您必须使用django.db.connection对象来连接数据库并直接执行原始SQL查询。您可以在views.py中使用查询结果,但最好考虑是否view.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查询更多信息。
常量变量是错误的。你必须声明DATABASES
变量。
在你的settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'myhost'
}
}
只是用正确的值替换占位符。
我觉得你在这里弄错了,我为我的应用程序使用了多个数据库,我已经有一个默认数据库集,这是我的第二个数据库。请参阅此链接获取详细的文档https://docs.djangoproject.com/en/1.11/topics/db/multi-db/ – kohl
这看起来很完美,所以一旦配置我的settings.py后,我可以直接使用上面的行如李所提到的代码?或者我需要配置其他的东西? – kohl
是的。你可以在shell中使用上面提到的代码(通过命令'python manage.py shell'使用shell)来查看它是否可以从你的数据库中得到结果。如果它返回了预期的结果,你可以简单地在py文件中使用相同的代码。 –
好的,谢谢 – kohl