Форум сайта python.su
from PyQt4 import QtGui, QtCore, QtSql
class mainform(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.resize(600, 400)
self.connect()
def connect(self):
con = QtSql.QSqlDatabase.addDatabase("QSQLITE ", "Base")
con.setDatabaseName("SQLiteBase/1.s3db")
if con.open():
print ("База данных не открылась!")
print ("-"+con.lastError().text()+"-")
print (str(con.lastError().type()))
cur = QtSql.QSqlQuery()
cur.exec("SELECT * FROM One")
print (cur.lastError().text())
con.close()
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
form1 = mainform()
form1.setWindowTitle("Работа с базами данных в PyQt4")
form1.show()
sys.exit(app.exec_())
Офлайн
if con.open():
print ("База данных не открылась!")
Отредактировано (Янв. 29, 2012 21:50:38)
Офлайн
SotericПотому что я балбес! А также потому, что изначально в коде присутствовала булевая переменная которой присваивался результат команды con.open(). Её я убрал за ненадобностью, но некорректно написал итоговый код. Конечно, там должно быть if not con.open().
Почему в коде если соединение открылось, то это интерпретируется как ошибка?
Отредактировано (Янв. 30, 2012 04:08:42)
Офлайн
SotericЧто-то я не понял. Там приведены скрипты для подключения драйверов. А куда эти скрипты вписывать, чтобы их запустить???
http://developer.qt.nokia.com/doc/qt-4. … river.html
Офлайн
Что-то тут активность больно низкая. На сайте по Qt быстрее отвечают. Но там все дружно на сях пишут.
Офлайн
Вписывать команды, однако, надо посредством CMD. Но что-то мне эта фигня не нравится. Как так вот модуль SQLITE3 сразу работает со своей базой данных без всяких настроечных скриптов?
Вот захочу я свою программку кому-нибудь дать. Мне придётся ему ещё указывать как там скрипты запускать, чтобы программа доступ к базе имела? А он мне скажет, нафиг ему такая программа?
Отредактировано (Янв. 30, 2012 08:49:08)
Офлайн
Почему же пример для баз данных из поставки PyQt работает? Правда, в нём база создаётся в памяти, а не на диске. А моя не работает, хоть в память, хоть на диск.
Офлайн
ПытонКогда то сталкивался с проблемой загрузки драйверов(driver not loaded) когда собирал .exe файл под windows. Я просто скопировал папку с драйверами(Python31\Lib\site-packages\PyQt4\plugins\sqldrivers) в каталог с exe-файлом и все заработало.
Почему же пример для баз данных из поставки PyQt работает? Правда, в нём база создаётся в памяти, а не на диске. А моя не работает, хоть в память, хоть на диск.
Отредактировано (Фев. 4, 2012 09:30:26)
Офлайн
cur.exec(“SELECT * FROM One”, con)
Короче, в этой команде было пропущено указание на соединение con. И всё, блин! Никакие драйверы тут ни при чём. Вот ненавижу когда комп выдаёт ошибки совершенно не соответствующие реальности! Безобразие!
Офлайн
ПытонЯ как то сразу не обратил внимание, а зачем вы вообще передаете второй аргумент вот тут(вам это точно необходимо задавать имя соединения?):
cur.exec(“SELECT * FROM One”, con)
Короче, в этой команде было пропущено указание на соединение con. И всё, блин! Никакие драйверы тут ни при чём. Вот ненавижу когда комп выдаёт ошибки совершенно не соответствующие реальности! Безобразие!
con = QtSql.QSqlDatabase.addDatabase("QSQLITE ", "Base")
cur.exec("SELECT * FROM One")
Отредактировано (Фев. 4, 2012 12:04:37)
Офлайн