将外部mysql数据库连接到django应用程序并查询它

时间:2017-06-21 19:17:50

标签: python mysql django django-models django-views

我需要将数据从外部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中特定表的数据?

2 个答案:

答案 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'            
    }
}

只需使用正确的值替换占位符。

相关问题