我需要将数据从外部MySQL数据库提取到我的应用程序。我已将以下行添加到settings.py文件中的数据库字典中。
'cust': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'cust_data',
'HOST': '',
'USER': '',
'PASSWORD': ''
}
引擎名称是否合适?我已经添加了所有其他细节。
现在是这样吗?我现在如何从这个数据库中获取数据?我可以在我的应用程序views.py中使用SQL查询吗?
现在当我使用下面的命令
输入shell时python manage.py shell
当我对MySQL数据库执行查询时,它不起作用。我相信我在这里遗漏了一些东西。
我被困在这里,我在这里做错了什么?如何运行命令以访问上述DB中特定表的数据?
答案 0 :(得分:2)
您的外部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在官方网站上查询更多信息。
答案 1 :(得分:0)
常量变量是错误的。您必须声明DATABASES
变量。
在你的settings.py
中DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'myhost'
}
}
只需使用正确的值替换占位符。