Уведомления

Группа в Telegram: @pythonsu

#1 Июль 17, 2016 22:50:25

MadGuest
Зарегистрирован: 2016-07-17
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3, PyQt5 и MySql системная ошибка при выполнении запроса

Всем привет!
Не смог определиться с разделом для создания темы, но так как новичок - пишу тут.
Пытаюсь написать приложение для работы с базой данных mysql, но столкнулся с тем, что даже простейший код из примеров, типа такого:

 from PyQt5.QtSql import QSqlDatabase, QSqlQuery, QSqlTableModel
from PyQt5.QtWidgets import QTableView, QApplication
import sys
app = QApplication(sys.argv)
db = QSqlDatabase.addDatabase("QMYSQL","mydb")
db.setHostName("localhost")
db.setDatabaseName("test")
db.setUserName("***")
db.setPassword("*******")
ok = db.open()
if not ok: print(db.lastError().text())
else: print("connected")
query = QSqlQuery(db);
query.exec_("SELECT * FROM table_one");
не работает. В момент выполнения запроса “query.exec_(”SELECT * FROM table_one“);” windows выдает сообщение о прекращении работы программы.

Насколько я могу судить, проблема даже не в коде, т.к. пробовал делать так:
 try:
    query.exec("show tables")
except:
    print(query.lastError().text())
И прогонять в отладчике pdb. Выходит, что ошибку выдает даже не python, а windows.
ОС windows 7 x64, python-3.5.2, PyQt-v5.6, пробовал как x32, так и x86_64, на двух компьютерах.
Подскажите, пожалуйста, как с этим быть?

Отредактировано MadGuest (Июль 17, 2016 22:51:10)

Офлайн

#2 Июль 18, 2016 00:34:43

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Python 3, PyQt5 и MySql системная ошибка при выполнении запроса

 а драйвер установлен?

 print map(str, QSqlDatabase.drivers())
по дефолту только SQLITE вроде есть

Отредактировано vic57 (Июль 18, 2016 00:46:58)

Офлайн

#3 Июль 18, 2016 08:39:48

MadGuest
Зарегистрирован: 2016-07-17
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3, PyQt5 и MySql системная ошибка при выполнении запроса

vic57
а драйвер установлен?
Да, установлены.
 print (list(map(str, QSqlDatabase.drivers())))
выдает:
============ RESTART: C:\Program Files\Python35\projects\tryDB.py ============
['QSQLITE', 'QMYSQL', 'QMYSQL3', 'QODBC', 'QODBC3', 'QPSQL', 'QPSQL7']
connected
В PyQt есть пример работы с sqlite - он работает, меняю в нем драйвер и параметры базы на mysql - перестает работать.

Отредактировано MadGuest (Июль 18, 2016 08:40:21)

Офлайн

#4 Июль 18, 2016 11:10:03

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Python 3, PyQt5 и MySql системная ошибка при выполнении запроса

ошибку выдает у вас в модуле Qt5Core.dll. попробуйте из консоли

 python -v my_script
больше информации будет
я делал
 import MySQLdb
и работал с БД из консоли
примерно так

Отредактировано vic57 (Июль 18, 2016 11:29:50)

Офлайн

#5 Июль 18, 2016 12:29:54

MadGuest
Зарегистрирован: 2016-07-17
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3, PyQt5 и MySql системная ошибка при выполнении запроса

python -v tryDB.py
последние строчки в логе:

# extension module 'PyQt5.QtSql' executed from 'C:\\Program Files (x86)\\Python35-32\\lib\\site-packages\\PyQt5\\QtSql.pyd'
import 'PyQt5.QtSql' # <_frozen_importlib_external.ExtensionFileLoader object at 0x002DDFB0>
connected
Получается, что скрипт соединяется с базой и падает на выполнении запроса, причем python не отлавливает эту ошибку никак.
vic57
я делал
import MySQLdb
и работал с БД из консоли
примерно так
К сожалению, у меня есть GUI приложение, написанное на python-27, надо расширить функционал. В реальности оказалось, что проще переписать по новой. Посмотрел PyQt5 - там QSqlTableModel в примерах, заманчиво написано, но вот вперся в эти грабли (((

Офлайн

#6 Июль 19, 2016 11:50:24

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Python 3, PyQt5 и MySql системная ошибка при выполнении запроса

MadGuest
В PyQt есть пример работы с sqlite - он работает, меняю в нем драйвер и параметры базы на mysql - перестает работать.
тут я бы в первую очередь сам MYSQL проверил
УМВР

Отредактировано vic57 (Июль 19, 2016 14:27:56)

Офлайн

#7 Июль 30, 2016 23:14:20

MadGuest
Зарегистрирован: 2016-07-17
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3, PyQt5 и MySql системная ошибка при выполнении запроса

Решил проблему:
Снес PyQt-5.6 и посредством pip установил PyQt-5.7. Получил ошибку “driver not loaded”, от которой избавился, скопировав файл libmysql.dll из папки “C:\Program Files\MySQL\MySQL Server 5.7\lib” в папку с моей программой.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version