0 / 0 / 0
Регистрация: 06.03.2023
Сообщений: 2
PyQt5

Подключение Python к БД PostgreSQL и ее отображение

06.03.2023, 13:08. Показов 2462. Ответов 4

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые!
Дали задание по курсовой, в которой по мимо самой курсовой нужно сделать :
1)БД (Сделал на PostgreSQL)
2)Свою программу на любом языке программирования(Выбор пал на Python)
Как я понял программа должна уметь выводить подключенную БД и переключаться по таблицам...

Создал main.py в ней подключил psycopg2 (данные для подключения лежат в config.py) для подключения к БД
+ PyQt5 для создания окошка с данными, назвал пару кнопок что-то типо "Вперед" и "Назад" а дальше просто не понимаю как связать их вместе, и можно ли так сделать

код в main.py

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtSql import QSqlDatabase,QSqlTableModel,QSqlQuery,QSqlQueryModel
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 находится:

Python
1
2
3
4
5
host = "localhost"
user = "postgres"
password = "123q"
db_name ="BD Aeroport"
port = 5432
Подскажите что что смотреть, мб материал какой, инфу на форуме(может не увидел), или свой код, во всяком случае буду благодарен!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.03.2023, 13:08
Ответы с готовыми решениями:

Python bottle + postgresql
Здравствуйте. Такая проблема: установил pgadmin3, создал там базу, создал файл index.py: # -*-...

Написать программу для работы с БД на Python с использованием Postgresql и QTableview
Есть у меня задание, накидать программу для работы с бд (сохранение, удаление, отмена изменений,...

PostgreSQL перехват сообщения в python
Есть триггерная функция (на ее основе построен триггер): CREATE OR REPLACE FUNCTION...

4
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
06.03.2023, 15:29
вот например

Добавлено через 14 минут
можете это пример использовать, только createConnection переделать надо
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import sys
 
from PyQt5.QtCore import Qt
from PyQt5.QtSql import QSqlDatabase, QSqlTableModel
from PyQt5.QtWidgets import (
    QApplication,
    QMainWindow,
    QMessageBox,
    QTableView,
)
 
class DbView(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setWindowTitle("QTableView Example")
        # Set up the model
        self.model = QSqlTableModel(self)
        #self.model.setTable("contacts")
        self.model.setEditStrategy(QSqlTableModel.OnFieldChange)
        self.view = QTableView()
        self.view.setModel(self.model)
        self.view.resizeColumnsToContents()
        self.setCentralWidget(self.view)
 
def createConnection():
    con = QSqlDatabase.addDatabase("QSQLITE")
    con.setDatabaseName("contacts.sqlite")
    if not con.open():
        QMessageBox.critical(
            None,
            "QTableView Example - Error!",
            "Database Error: %s" % con.lastError().databaseText(),
        )
        return False
    return True
 
app = QApplication(sys.argv)
if not createConnection():
    sys.exit(1)
win = DbView()
win.show()
sys.exit(app.exec_())
https://is20-2019.susu.ru/utki... qt-osnovy/
0
0 / 0 / 0
Регистрация: 06.03.2023
Сообщений: 2
07.03.2023, 10:59  [ТС]
А по подробнее можно, как для чайника?
Может просто с помощью psycopg2 подключаться?
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
07.03.2023, 14:23
Цитата Сообщение от Nexus73 Посмотреть сообщение
Может просто с помощью psycopg2 подключаться?
это в примере по ссылке
для QtSQl
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import sys
from PyQt5.QtCore import Qt,pyqtSlot
from PyQt5.QtSql import QSql, QSqlDatabase, QSqlTableModel
from PyQt5.QtWidgets import (
    QApplication,
    QMainWindow,
    QMessageBox,
    QTableView,
)
 
def createConnection(db_name, host='',port=7777, user='',password='', driver="QPSQL"):
    db = QSqlDatabase.addDatabase(driver)
    #print(db.drivers())
    db.setDatabaseName(db_name)
    db.setHostName(host)
    db.setPort(port)
    db.setUserName(user)
    db.setPassword(password)
    if not db.open():
        QMessageBox.critical(None,"Error",db.lastError().text(),)
        return False
    return True
    
class DbView(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        menubar = self.menuBar()
        menubar.setNativeMenuBar(False)
        self.mtables = menubar.addMenu("Таблицы")
        self.model = QSqlTableModel(self)
        self.model.setEditStrategy(QSqlTableModel.OnFieldChange)
        view = QTableView()
        view.setModel(self.model)
        view.setSortingEnabled(True)
        view.horizontalHeader().setSectionResizeMode(1)
        view.verticalHeader().setSectionResizeMode(3)
        self.setCentralWidget(view)
        self.add_tables()
        
    def add_tables(self):
        self.mtables.clear()
        for t in self.model.database().tables():
            self.mtables.addAction(t,self.on_tables)
                
    @pyqtSlot()            
    def on_tables(self):
        self.model.setTable(self.sender().text())
        self.model.select()
                
app = QApplication(sys.argv)
if not createConnection('mybase'):
    sys.exit()
w = DbView()
w.show()
sys.exit(app.exec_())
Добавлено через 9 минут
https://github.com/baoboa/pyqt... amples/sql
тут есть примеры по sql
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
08.03.2023, 12:45
Обязательно Qt? Возьми django - там ORM есть
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.03.2023, 12:45
Помогаю со студенческими работами здесь

Python/PyQt5/PostgreSQL/Tkinter
Всем привет! Помогите, пожалуйста, как можно таблицы из БД(postgresql) визуализировать через...

Есть запрос на вставку в PostgreSQL нужно написать этот запрос в Python
Есть запрос на вставку в PostgreSQL нужно написать этот запрос в Python INSERT INTO "table1"...

Как создать базу данных PostgreSQL из Python ?
Хочу создать базу данных в PostgreSQL, и залить туда свои таблицы для обработки средствами СУБД....

Python + Google Drive + PostgreSQL
Здравствуйте. Есть ли образец скрипта на Python, благодаря которому можно скачать csv-файлы с...

Как добавить точку в колонку таблицы с Python? PostgreSQL
Всем доброго времрени суток!!! У меня есть такой код: import discord from discord.ext import...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru