1

我正在尝试创建一个 Web 应用程序来处理帐户数据并将所述数据打印到帐户报表和年龄分析中。

数据需要从现有的 Sage Evolution 数据库中获取,并通过 Django 打印到网页上。

我查看了 Django 文档,但是,inspectdb它提供的功能并没有提供太多关于如何通过数据库 IP 地址获取数据的信息。

有没有人有关于如何通过 IP 地址获取此数据的代码示例/教程,几乎与以下.BAT代码的过程相同

import pymssql

user = '[User ]'
password = '[Password]'
server = '[IP]'

#username: [Username]_dev_ro
#password: [Password]
#database name: DB_Name

databaseName = 'DB_Name'

conn = pymssql.connect(server, user, password, databaseName)
cursor = conn.cursor(as_dict=True)

cursor.execute('SELECT top 10 * FROM [DB_Name].[dbo].[_etblGLAccountTypes]')
for row in cursor:
    print(row)

conn.close()
4

1 回答 1

1

使用 Django 时,无需编写代码手动连接数据库。您只需在 Django 项目中配置DATABASES字段,settings.py然后 Django ORM 就已经为您完成了这项工作。实际上,您甚至不必再编写 SQL 命令(除非您有尚未涵盖的非常具体的用例),因为 Django 已经提供了工具(通过模型类方法)来为您编写。

.
├── manage.py
└── my_proj
   ├── asgi.py
   ├── __init__.py
   ├── settings.py  <--- This one
   ├── urls.py
   └── wsgi.py

示例配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydatabase',
        'USER': 'mydatabaseuser',
        'PASSWORD': 'mypassword',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

配置后,运行任何以数据库为目标的 Django 管理命令,例如inspectdb已经与配置的数据库通信。您可能需要为现有数据库创建模型,如文档所示python manage.py inspectdb > models.py。然后,执行查询将很简单:

$ python manage.py shell
>>> from my_app import models
>>> models.ModelA.objects.all()
<QuerySet [<ModelA: ModelA object (1)>, <ModelA: ModelA object (2)>]>
>>> models.ModelA.objects.values()
<QuerySet [{'id': 1, 'child_field_id': None, 'field_a': 'Value 1'}, {'id': 2, 'child_field_id': 1, 'field_a': 'Value 2'}]>

有关查询的更多选项,请参阅文档

您甚至可以通过文档python manage.py dbshell中的方式直接连接到您的数据库。

于 2021-08-19T08:14:31.473 回答