我正在尝试创建一个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()
使用Django时,不需要编写代码手动连接数据库。你只需要配置数据库字段在你的Django项目的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',
}
}
配置后,运行任何针对数据库(如inspectdb
)的Django管理命令将已经与配置的数据库通信。你可能需要为你现有的数据库创建模型,例如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'}]>
有关查询的更多选项,请参见docs.
你甚至可以通过python manage.py dbshell
直接连接到你的数据库。