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

问题描述 投票:0回答:2

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

'cust': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'cust_data',
        'HOST': '',
        'USER': '',
        'PASSWORD': ''
    }

发动机名称正确吗?我已添加所有其他详细信息。

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

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

python manage.py shell

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

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

python mysql django django-models django-views
2个回答
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()

对于方法

fetchall()
,它应该以元组形式返回结果。

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


1
投票

常量变量错误。您必须声明

DATABASES
变量。

在你的settings.py中

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydatabase',
        'USER': 'myuser',
        'PASSWORD': 'mypassword',
        'HOST': 'myhost'            
    }
}

只需将占位符替换为正确的值即可。

© www.soinside.com 2019 - 2024. All rights reserved.