Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 06.03.2023
Сообщений: 2

Подключение Python к Базе Данных PostgreSQL и ее отображение в PyQt5

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

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

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

код в main.py

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtSql import QSqlDatabase,QSqlTableModel,QSqlQuery,QS qlQueryModel
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

Подскажите что что смотреть, мб материал какой, инфу на форуме(может не увидел), или свой код, во всяком случае буду благодарен!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.03.2023, 13:08
Ответы с готовыми решениями:

Проблема подключения к базе данных PostgreSQL с PyQt5.QtSql. Драйвер не загружен
Добрый день, кто-нибудь может подсказать что делать? Пытаю подключиться к базе PostgreSQL с PyQt5.QtSql но вылетает сообщение что драйвер...

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

Выгрузка базы данных PostgreSQL в PyQt5
Подскажите, пожалуйста, для того, чтобы выгрузить БД в PyQt5, хватит одного файла .py или нужные какие-то дополнительные файлы, которые...

4
956 / 712 / 275
Регистрация: 10.12.2016
Сообщений: 1,754
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
956 / 712 / 275
Регистрация: 10.12.2016
Сообщений: 1,754
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
 Аватар для Рыжий Лис
5967 / 3730 / 1098
Регистрация: 17.05.2012
Сообщений: 10,787
Записей в блоге: 9
08.03.2023, 12:45
Обязательно Qt? Возьми django - там ORM есть
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.03.2023, 12:45
Помогаю со студенческими работами здесь

SSAS. Подключение к базе PostgreSql
Hello world! У меня есть SQL-сервер с установленным Analysis Services Мне нужно закачать в куб данные из PostgreSql. На сайте...

Подключение к базе PostgreSQL с компьютера пользователя
Добрый день. Написал программу работы с БД PostgreSQL испльзующую Npgsql (Visual Studio Community 2019, c#). На моей машине все работает...

Подключение к базе PostgreSQL через ADO
Подскажите, как подключить базу данных на postgre через ADO в Delphi 7? Какой нужен провайдер, как его установить? Большое спасибо...

Ошибки при подключение к базе PostgreSQL в Denwer
Здравствуйте! Мне нужно перейти в Denwer с mysql на postgresql. Создала базу в phppgadmin под названием Site. В файле connect.php пишу...

Delphi XE3+PostgreSQL+Zeos подключение к базе
Всем доброго времени суток. Проблема следующая: пытаюсь подключиться к postgesql через zeos. Добавляю на форму TZConnnntction и сразу...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. ) В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер