Как получить список таблиц и вернуть его с помощью REST API Django?
Я новичок в Django. В настоящее время я хочу подключиться к postgres database
, получить данные из базы данных и вернуть значение с помощью REST API
.
Я хочу возвращать данные динамически. Поэтому я создал модуль/функцию, которая может получать данные и возвращать их в формате json
.
Причина, по которой я создал модуль/функцию, заключается в том, чтобы в будущем динамически получать данные из любых таблиц баз данных. (Каждая таблица может иметь различные имена столбцов).
Мои вопросы:
- Можно ли получить данные из базы данных с помощью отдельного модуля/функции (.py) и вернуть вывод из этого модуля/функции в REST API?
- Могли бы вы дать мне следующие инструкции, что мне нужно создать в проекте Django, чтобы показать/возвратить выходные данные из
DbLoader.py
вREST API
?
Большое спасибо.
Мое дерево проектов:
C:.
├───DBD
│ └───__pycache__
├───demopage
│ ├───migrations
│ │ └───__pycache__
│ ├───templates
│ └───__pycache__
├───restapi
│ ├───migrations
│ │ └───__pycache__
│ └───__pycache__
└───src
└───__pycache__
Это моя автономная функция для подключения и получения данных в json
, DBD\src\DbLoader.py
:
import psycopg2
import json
class DbLoader:
def __init__(self, host, port, dbname, user, password):
# postgres
self.host = host
self.port = port
self.dbname = dbname
self.user = user
self.password = password
def connectDB(self):
# connection information
conn = 'host = {host} port = {port} dbname = {dbname} user = {user} password = {password}'.format(
host = self.host,
port = self.port,
dbname = self.dbname,
user = self.user,
password = self.password
)
# establish connection
print(conn)
self.db = psycopg2.connect(conn)
self.cur = self.db.cursor()
def view_connDB(self):
sql = 'SELECT VERSION()'
self.cur.execute(sql)
result = self.cur.fetchone()
self.db.close()
return result
def view_table(self):
sql = """SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'"""
self.cur.execute(sql)
result = self.cur.fetchall()
cols = ('tbl_name',)
tbl_list = []
if len(result) == 0:
print('There is no data')
else:
for rows in result:
tbl_list.append(dict(zip(cols, rows)))
# return json output
return json.dumps(tbl_list)
Я изменил файл DBD\demopage\views.py
, но я не уверен, как вернуть вывод в REST API:
from django.shortcuts import render
from django.views.generic import TemplateView
from rest_framework import status, views
from rest_framework.response import Response
from src import DbLoader as dl
# Create your views here.
class mapping(views.APIView):
def post(self):
try:
x = dl.DbLoader(host='localhost', port='', dbname='djangodb', user='postgres', password='1234')
x.connectDB()
output = x.view_connDB()
return Response(output)
except Exception as e:
return Response(str(e), status=status.HTTP_400_BAD_REQUEST)
Вы можете получить доступ к проекту на Github.