Форум сайта python.su
0
Всем привет!
Не смог определиться с разделом для создания темы, но так как новичок - пишу тут.
Пытаюсь написать приложение для работы с базой данных 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");

try: query.exec("show tables") except: print(query.lastError().text())
Отредактировано MadGuest (Июль 17, 2016 22:51:10)
Офлайн
а драйвер установлен?
print map(str, QSqlDatabase.drivers())
Отредактировано vic57 (Июль 18, 2016 00:46:58)
Офлайн
0
vic57Да, установлены.
а драйвер установлен?
print (list(map(str, QSqlDatabase.drivers())))
============ RESTART: C:\Program Files\Python35\projects\tryDB.py ============
['QSQLITE', 'QMYSQL', 'QMYSQL3', 'QODBC', 'QODBC3', 'QPSQL', 'QPSQL7']
connected
Отредактировано MadGuest (Июль 18, 2016 08:40:21)
Офлайн
ошибку выдает у вас в модуле Qt5Core.dll. попробуйте из консоли
python -v my_script
import MySQLdb
Отредактировано vic57 (Июль 18, 2016 11:29:50)
Офлайн
0
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
vic57К сожалению, у меня есть GUI приложение, написанное на python-27, надо расширить функционал. В реальности оказалось, что проще переписать по новой. Посмотрел PyQt5 - там QSqlTableModel в примерах, заманчиво написано, но вот вперся в эти грабли (((
я делал
import MySQLdb
и работал с БД из консоли
примерно так
Офлайн
MadGuestтут я бы в первую очередь сам MYSQL проверил
В PyQt есть пример работы с sqlite - он работает, меняю в нем драйвер и параметры базы на mysql - перестает работать.
Отредактировано vic57 (Июль 19, 2016 14:27:56)
Офлайн
0
Решил проблему:
Снес PyQt-5.6 и посредством pip установил PyQt-5.7. Получил ошибку “driver not loaded”, от которой избавился, скопировав файл libmysql.dll из папки “C:\Program Files\MySQL\MySQL Server 5.7\lib” в папку с моей программой.
Офлайн