Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/230: Рейтинг темы: голосов - 230, средняя оценка - 4.77
3 / 3 / 1
Регистрация: 24.03.2011
Сообщений: 65

PyQT5. Работа с базой данных

20.08.2016, 05:41. Показов 46054. Ответов 32
Метки pyqt, sql (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Изучаю базы данных, а заодно и PyQt.
При помощи QSqlQueryModel или QSqlTableModel и QTableView отобразил нужные данные в приложении. Как осуществить добавление и удаление данных? Как сделать столбец, поля которого можно редактировать только выбирая доступные варианты.
Как отредактировать, добавить, удалить данные из сетки полученной подобным запросом:
SQL
1
2
 SELECT Office.Name_, Departments_type.Name_ FROM Office, Departments_type, Departments
 WHERE id_office = Office.key_ AND id_type_depart = Departments_type.key_;
Под сеткой я понимаю QTableVie.

Сложновато изучать PyQt5 - Документация на англ. и на с++ )
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.08.2016, 05:41
Ответы с готовыми решениями:

Работа с базой данных
Здравствуйте. Скажите, пожалуйста, есть ли какие-то библиотеки (Python) для работы с базой данных Cros 4.01.79? Искал - не нашел, а...

Работа с базой данных
привет. читаю джангокнигу потихонечку разбираюсь с представлениями, вроде потихонечку вникаю. дошел до раздела с работой с...

Работа с базой данных в python
Вывожу в докере информацию о картинках. В поле icon, они хранятся вместе с тегами. <a target="_blank"...

32
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
16.05.2017, 20:06
Студворк — интернет-сервис помощи студентам
VVaDiIvIkA, ты использовал подключение к mysql, а "database.sqlite" это sqlite. Совсем другая БД в общем. На сколько мне помнится в настройках подключение к ней было закоментированно. Нужно его раскоментировать, а подключение к mysql закоментировать.
1
0 / 0 / 0
Регистрация: 19.04.2016
Сообщений: 6
16.05.2017, 20:18
alex925,
Цитата Сообщение от alex925 Посмотреть сообщение
ты использовал подключение к mysql, а "database.sqlite" это sqlite. Совсем другая БД в общем. На сколько мне помнится в настройках подключение к ней было закоментированно. Нужно его раскоментировать, а подключение к mysql закоментировать.
ааааа, вот теперь понял зачем там комментарий, запутался из-за sqlite, ну да ладно, я уже создал такую же базу в mysql и всё работает, благодарю! осталось переделать немного. А больше примеров у вас нет похожих с базами и таблицами?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
16.05.2017, 20:38
VVaDiIvIkA, Есть некоторые открытые проекты на bitbucket, но думаю они будут через чур сложны для тебя.
1
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
16.05.2017, 21:34
Цитата Сообщение от I.G.O.R Посмотреть сообщение
поля которого можно редактировать только выбирая доступные варианты.
Написать свой делегат.
Цитата Сообщение от I.G.O.R Посмотреть сообщение
Как отредактировать, добавить, удалить данные из сетки полученной подобным запросом:
Удалять запросом по ID.

Добавлено через 42 минуты
Т.е. писать "руками" код который будет удалять записи. Тоже самое касается редактирования (делается специальный диалог для редактирования записи).
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
16.05.2017, 21:43
Avazart, эта тема прошлого года, думаю автору давно все равно или он решил уже проблему.
0
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 7
26.09.2018, 14:52
Приветствую всех, особенно тех, кто сможет помочь новичку.
Не могу установить коннект с БД postgresql.

В файле hw.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
from PyQt5 import QtWidgets, QtSql
import sys
 
app=QtWidgets.QApplication(sys.argv)
 
db=QtSql.QSqlDatabase.addDatabase("QPSQL")
#db=QtSql.QSqlDatabase.addDatabase("QODBC")
 
db.setHostName("10.*.*.*")
db.setPort(5432)
db.setDatabaseName("test")
db.setUserName("postgres")
db.setPassword("****")
#db.setConnectOptions("requiressl=0")
 
#db.setDatabaseName('Driver={PostgreSQL ODBC Driver(UNICODE)};Server=10.*.*.*;Port=5432;Database=test;UID=postgres;PWD=****')
#db.setDatabaseName('DRIVER={PostgreSQL Unicode};Server=10.*.*.*;Port=5432;Database=test;UID=postgres;PWD=****')
 
if db.isOpen():
            db.close()
 
if db.open():
    print("Connection Success")
else:
    print("Something wrong")
 
db.close()
Запускаю через IDLE (Python 3.7 64-bit).
В Shell получаю:
>>>
=========================== RESTART: C:/Temp/hw.py ===========================
Something wrong
>>>

Как видно, пробовал и через драйвер ODBC, и через QPSQL.
Никак.

P.S. Для соединения с БД использую PyQt5, поскольку в перспективе нужно разработать GUI для работы с БД.
Помогите!...
в смысле, - help!!
0
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
27.09.2018, 07:34
реализация sql в Qt не очень гут. я использую Qt для GUI, а с БД работаю средствами питона
https://eax.me/python-postgresql/
1
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 7
27.09.2018, 09:30
Да, через библиотеку psycopg2 подключился "на раз-два":

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import psycopg2
import psycopg2.extras
import sys
 
def main():
    conn_string = "host='10.*.*.*' dbname='test' user='postgres' password='****'"
    
    conn = psycopg2.connect(conn_string)
 
    cursor = conn.cursor('cursor_unique_name', cursor_factory=psycopg2.extras.DictCursor)
    cursor.execute('SELECT * FROM "tst"')
 
    i = 0
    for row in cursor:
        i += 1
        print ("row: %s    %s\n" % (i, row))
 
if __name__ == "__main__":
    main()
Вывод:

>>>
====================== RESTART: C:/Temp/hw_psycopg2.py ======================
Connecting to database
->host='10.2.3.243' dbname='test' user='postgres' password='alex78617'
row: 1 [1, 'раз']

row: 2 [2, 'два']

>>>
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
27.09.2018, 10:08
Цитата Сообщение от vic5710 Посмотреть сообщение
реализация sql в Qt не очень гут. я использую Qt для GUI, а с БД работаю средствами питона
https://eax.me/python-postgresql/
Вы просто знаете Qt не очень гуд.
Использовать другие библиотеки глупо.

Добавлено через 2 минуты
Цитата Сообщение от I.G.O.R Посмотреть сообщение
Как осуществить добавление и удаление данных? Как сделать столбец, поля которого можно редактировать только выбирая доступные варианты.
В каком плане? Чисто в кодом или в Gui? Есть QSqlQuery.
Цитата Сообщение от I.G.O.R Посмотреть сообщение
Как осуществить добавление и удаление данных? Как сделать столбец, поля которого можно редактировать только выбирая доступные варианты.
Через делегат.

Добавлено через 40 секунд
Цитата Сообщение от I.G.O.R Посмотреть сообщение
Сложновато изучать PyQt5 - Документация на англ. и на с++ )
Учите С++ )))
А вообще есть книга Самерфилда по C++Qt и по Python PyQt

Добавлено через 3 минуты
Python
1
2
3
4
if db.open():
    print("Connection Success")
else:
    print("Something wrong")
Гавнокод, нужно выводить ошибку которую говорит db, т.е db.lastError().text()

http://doc.qt.io/qt-5/qsqldatabase.html#lastError

А вообще для QPSQL вполне возможно отсутствует драйвер БД.
1
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 7
27.09.2018, 13:31
Цитата Сообщение от Avazart Посмотреть сообщение
Гавнокод
Вот тут поспорю: правильно говорить "говнокод", что, впрочем, естественно, поскольку третий день знакомства с Python.

Цитата Сообщение от Avazart Посмотреть сообщение
db.lastError().text()
А вообще для QPSQL вполне возможно отсутствует драйвер БД.
Именно:
Driver not loaded Driver not loaded
Как оказалось, это решается копированием в директорию с питоном файлов libiconv-2.dll, libintl-8.dll, libpq.dll, libeay32.dll, ssleay32.dll.

Что, впрочем, меня немало удивило: не ожидал, что после установки библиотеки еще придется dll-ки руками таскать с сервера на клиентов.
Пожалуй, это не менее глупо, чем импортировать 2 библиотеки с возможностью работы с БД.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
27.09.2018, 17:42
Цитата Сообщение от alexiy_v Посмотреть сообщение
Что, впрочем, меня немало удивило: не ожидал, что после установки библиотеки еще придется dll-ки руками таскать с сервера на клиентов.
Пожалуй, это не менее глупо, чем импортировать 2 библиотеки с возможностью работы с БД.
Нечему удивляться все очевидно.

libpq.dll - клиентская библиотека самой postgresql нужная для работы Qt-драйвера.
Остальное вспомогательное OpenSSL и iconv для работы с кодировками.
0
0 / 0 / 0
Регистрация: 30.05.2015
Сообщений: 3
16.11.2018, 08:15
Здравствуйте! У меня такая же проблема как у alexiy_v, код программы такой же, вот только копирование файлов в директорию питона ничего не дает.
Ошибка такая:
Driver not loaded Driver not loaded
['QSQLITE', 'QODBC', 'QODBC3', 'QPSQL', 'QPSQL7'], причем нужный драйвер вроде как все-таки существует.
Использую: anaconda 5.3.0, PostgreSQL 10, PyQt ставила через "conda install pyqt.
Где-то читала, что надо пути прописать в PATH, но у меня ограниченные права пользователя
Бьюсь с этим уже неделю Помогите, пожалуйста!
0
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 7
16.11.2018, 15:16
Цитата Сообщение от Kawade Посмотреть сообщение
надо пути прописать в PATH
У меня код отрабатывается и без путей к Python в Path.
Цитата Сообщение от Kawade Посмотреть сообщение
у меня ограниченные права пользователя
Видимо, причина в этом.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.11.2018, 15:16

VK bot работа с базой данных
И так , хочу у боту подключить базу данных , чтоб он записывал id каждого кто ему пишет , но он просто выпадает в ошибку когда я проверяю...

Python работа с базой данных
надо на python доработать код, чтобы он отправлял данные в базу данных sql = """INSERT INTO cms_blog_posts( ...

Используя функции категории Работа с базой данных в excel 2010, реализовать запрос к базе данных
Используя функции категории Работа с базой данных, реализовать запрос к базе данных: средняя закупочная цена для одного вида мороженого.

PHP и работа с базой данных (замена данных)
Добрый вечер. Начал ознакомление с бд. Создал ее + таблицу, написал добавление через форму, теперь пытаюсь написать изменение данных....

Работа с базой данных
Здравствуйте, есть база данных на oracal, нужно получать из неё данные и выводить на сайт. Как это можно сделать? на прямую запросом или...


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru