2015-10-26 3 views
0

Я использую PySide для получения привязок Qt в python. Проблема, с которой я столкнулась, заключается в том, что она не может найти имя таблицы после подключения к базе данных. Во-первых, я добавил базу данных с помощью QSqlDatabase, а также установил имя в файл базы данных sqlite. После этого я создал QSqlTableModel и установил таблицу как одну из таблиц внутри моей базы данных. Когда я это делаю, ничего не появляется. Вызывая функцию lastError(), он говорит, что таблица не найдена. Я знаю, что соединение с базой данных хорошо, потому что db.open() возвращает true. Я вручную посмотрел в файл базы данных, и в нем действительно есть таблицы с этим конкретным именем. Интересно то, что указатель на базу данных отличается от QSqlDatabase и QSqlTableMode(). Это должно произойти? Указатели разные, но имя (те, которые говорят драйверы = ..., база данных = .... и т. Д.)pyside QSqlTableMode() не может найти таблицу из базы данных из sqlite

В чем может быть проблема? Вот как я его настраиваю.

db = QSqlDatabase.addDatabase("QSQLITE") 
    db.setDatabaseName("test.db") 
    print str(db.open()) 
    print str(db.database()) 

    model = QSqlTableModel() 
    model.setTable("AntennaModels") 
    model.select() 
    print str(model.lastError()) 

Вот что печатает, когда я использую db.database() и model.database()

<PySide.QtSql.QSqlDatabase(driver=""QSQLITE"", database=""test.db"", host="""", port=-1, user="""", open=true) at 0x104bf73b0> 
<PySide.QtSql.QSqlDatabase(driver=""QSQLITE"", database=""test.db"", host="""", port=-1, user="""", open=true) at 0x104bf73f8> 
+0

Этот относительный путь к базе данных выглядит сомнительным: попробуйте использовать абсолютный путь. – ekhumoro

+0

Хм, он работал с абсолютным путем. Есть ли способ, которым я могу использовать относительные пути? Я знаю, что база данных всегда будет находиться в том же месте, что и текущий файл, поэтому я думал, что просто указать имя будет достаточно. Наверное, нет. Я бы хотел, чтобы он был портативным, поэтому я могу легко упаковать. – TheBlueMan

+1

'os.path.join (os.path.dirname (os.path.absdir (__ file__)), 'test.db')'. – ekhumoro

ответ

0

Проблема была с QSqlDatabase не найти нужную базу данных. Первоначально я думал, что просто перечисляя имя, которое ищет текущий каталог файла для базы данных. Это не похоже на это. Как было предложено эхуморо, я установил его с помощью абсолютного пути. Чтобы сделать этот переносчик между разными машинами, я использовал функции поиска файлов python для получения абсолютного пути, а затем добавил туда элемент базы данных.

 Смежные вопросы

  • Нет связанных вопросов^_^