Извлечение данных из существующей базы данных
Я пытаюсь создать веб-приложение, которое обрабатывает данные счета и печатает эти данные для выписок по счету и анализа возраста.
Данные нужно будет получать из существующей базы данных 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 вам не нужно писать код для ручного подключения к базе данных. Вам просто нужно настроить поле DATABASES в settings.py
вашего Django проекта, после чего 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'}]>
Для получения дополнительной информации о возможностях работы с запросами смотрите docs.
Вы даже можете подключиться непосредственно к вашей базе данных через python manage.py dbshell
, как документировано .