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

koh*_*ohl 1 python mysql django django-models django-views

我需要将数据从外部 MySQL 数据库提取到我的应用程序。我已将以下几行添加到 settings.py 文件中的数据库字典中。

'cust': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'cust_data',
        'HOST': '',
        'USER': '',
        'PASSWORD': ''
    }
Run Code Online (Sandbox Code Playgroud)

发动机名称对吗?我已经添加了所有其他细节。

现在是这样吗?我现在如何从这个数据库中获取数据?我可以在我的应用程序 views.py 中简单地使用 SQL 查询吗?

现在,当我使用以下命令进入 shell 时

python manage.py shell
Run Code Online (Sandbox Code Playgroud)

当我对 MySQL 数据库执行查询时,它不起作用。我确定我在这里遗漏了一些东西。

我被困在这里,我在这里做错了什么?如何运行命令来访问上述数据库中特定表中的数据?

Lee*_*ton 5

您的外部 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()
Run Code Online (Sandbox Code Playgroud)

对于 fetchall() 方法,它应该以元组形式返回您的结果。

您可以从这里参考官方网站中的更多信息。