使用lastError()

时间:2015-06-03 20:08:21

标签: python sql qt sqlite pyqt

我在PyQT中打开QSqlDatabase(QSQLITE)时遇到了麻烦,我似乎没有得到一个有用的错误,告诉我它为什么会失败。我使用的是Python 3.4.3和PyQt 4.11.3。

这是我的代码片段,我很快就一起攻击,试图让事情发挥作用:

def __init__(self):
    self.__database = QtSql.QSqlDatabase.addDatabase("QSQLITE")

    if self.__database.isValid():
        print("DB is Valid")
    else:
        print("DB is Not Valid")

    if not self.__database.open():
        print("Could not open database.")
        print("Text: " + self.__database.lastError().text())
        print("Type: " + str(self.__database.lastError().type()))
        print("Number: " + str(self.__database.lastError().number()))

    query = QtSql.QSqlQuery(self.__database)
    query.exec("create table person (id int primary key, firstname varchar(20), lastname varchar(20))");
    query.exec("insert into person values(101, 'Danny', 'Young')");
    query.exec("insert into person values(102, 'Christine', 'Holand')");
    query.exec("insert into person values(103, 'Lars', 'Gordon')");

以上运行时输出结果:

DB有效

无法打开数据库。

文字:

输入:0

数字:-1

QSqlQuery :: exec:数据库未打开

QSqlQuery :: exec:数据库未打开

QSqlQuery :: exec:数据库未打开

QSqlQuery :: exec:数据库未打开

任何方向都会非常感激!令人沮丧的是,错误信息根本不是很有用。

1 个答案:

答案 0 :(得分:1)

我的愚蠢错误。通过使用QtSql.QSqlDatabase.setDatabaseName设置数据库名称(" name_here.db")