Как подключить Python к Базе Данных PostgreSQL и отобразить ее в PyQt5?
Дали задание по курсовой, в которой помимо самой курсовой нужно сделать:
- БД (Сделал на
PostgreSQL
); - Свою программу на любом языке программирования (Выбор пал на
Python
). Как я понял, программа должна уметь выводить подключенную Базу Данных и переключаться по таблицам;
Создал main.py
, в нём подключил psycopg2
(данные для подключения лежат в config.py
) для подключения к Базе Данных.
Ещё есть PyQt5
для создания окошка с данными, назвал пару кнопок "Вперед" и "Назад", а дальше просто не понимаю, как связать их вместе, и можно ли так сделать?
Вопрос: Как подключить Python к Базе Данных PostgreSQL и отобразить ее в PyQt5?
Вот код в main.py
:
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtSql import
QSqlDatabase,QSqlTableModel,QSqlQuery,QSqlQueryMod el
import sys
import psycopg2
from config import host, user, password,db_name
# connect to database
connection = psycopg2.connect(
host=host,
user=user,
password=password,
database=db_name
)
print("Database opened successfully")
def application():
app = QApplication(sys.argv)
window = QMainWindow()
window.setWindowTitle("Изи СУБД")
window.setGeometry(400,300, 450,450)
main_text = QtWidgets.QLabel(window)
main_text.setText("База данных Аэропорт")
main_text.move(145, 15)
main_text.adjustSize()
Rbtn = QtWidgets.QPushButton(window)
Rbtn.move(230, 350)
Rbtn.setFixedSize(10,45)
Rbtn.setText("Вперед")
Rbtn.setFixedWidth(200)
Lbtn = QtWidgets.QPushButton(window)
Lbtn.move(20, 350)
Lbtn.setFixedSize(10, 45)
Lbtn.setText("Назад")
Lbtn.setFixedWidth(200)
db = QSqlDatabase.addDatabase('PostgreSQL')
window.show()
sys.exit(app.exec_())
if __name__=="__main__":
application()
Вот config.py
:
host = "localhost"
user = "postgres"
password = "123q"
db_name ="BD Aeroport"
port = 5432
Подскажите, что посмотреть, может, материал какой, информацию на форуме (может, не увидел) или свой код, в любом случае буду благодарен! Даже если просто выводиться будет без кнопок, то уже прогресс будет!))
Источник: Stack Overflow на русском