python - 如何使用 Django 查询多种数据库类型?

标签 python database django

我正在尝试构建一个基于 django 的网页(我了解 python,并且想要开发一些基于 Web 的应用程序)。此页面的目标是显示来 self 只有读取访问权限的几个不同数据库的数据。基本上,它是一些关键内容的仪表板类型 View 。

我已经构建了一个 Sqlite 数据库来保存应用程序的 Django 设置。我如何从这里分支出来呢?我想查询 Oracle 数据库和 MySQL 数据库?

我可以在适当的 View 中使用类似的东西单独查询它们:

def test(request):
    from django.db import load_backend
    myBackend = load_backend('django.db.backends.oracle') # or 'mysql', 'sqlite3', 'oracle'
    myConnection = myBackend.DatabaseWrapper({
        'HOST': 'myhost',
        'NAME': 'mysid',
        'OPTIONS': {},
        'PASSWORD': "mypass",
        'PORT': "1521",
        'USER': "myuser", 
        'TIME_ZONE': "America/Chicago"})

    # Now we can do all the standard raw sql stuff with myConnection.
    myCursor = myConnection.cursor()
    myCursor.execute("SELECT COUNT(1) FROM schema.table;")
    return HttpResponse("%s." % myCursor.fetchone())

在模板中我可以显示这个计数。但是,根据我查询 Sqlite 数据库的方式,这似乎不正确。

我想使用数据模型。当我只是读取数据时,这是合适的方法吗?该帐户没有对 oracle/mysql 表的写入权限。

有没有办法为现有表自动生成这些模型?其中一些表的列数相当大,如果可能的话,我更愿意自动创建以防止我犯错误。

最佳答案

有关多数据库支持,请参阅 Django documentation 。总而言之,您将每个数据库的连接信息添加到您的DATABASES 设置中,然后设置一个路由器来确定每个数据库处理哪些应用/模型。

要从现有数据库表生成模型,您可以使用 inspectdb management command 。但是,Django 并未使用此命令明确列出对 Oracle 数据库的支持,因此您可能需要自行解决。

关于python - 如何使用 Django 查询多种数据库类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11831565/

相关文章:

python - Pandas - 合并多个时间列并填充值

sql - 关于建立库存数据库的问题

python - 如何使用 python 访问在线托管的数据库?

python - Django Haystack 外键关系

python - psycopg2 类中的连接和光标

Python 导入错误 : No module named psycopg2

python - PyQt5:创建具有非透明子项的半透明窗口

database - postgres中区间数据类型的插入语法

python - 使所有以 "@"和 "#"开头的单词可点击

python - django-mailer 尝试发送邮件时出错