Как получить список таблиц и вернуть его с помощью 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.

Вернуться на верх