Я уверен, что это очень просто, но я не могу заставить этот базовый c запрос работать с PyQt5 с использованием Q PSQL.
import sys
from PyQt5.QtSql import *
class Main():
def __init__(self, parent=None):
SQL = "SELECT address FROM organisation_addresses WHERE organisation_id = ?"
query = QSqlQuery()
query.prepare(SQL)
query.addBindValue(12)
query.exec_(SQL)
query.first()
if query.isActive():
print(query.value("address"))
else:
print(query.lastError().text())
if __name__=="__main__":
db = QSqlDatabase.addDatabase("QPSQL");
db.setHostName(server)
db.setDatabaseName(database)
db.setUserName(user)
db.setPassword(pword)
if (db.open()==False):
QMessageBox.critical(None, "Database Error", db.lastError().text())
myapp = Main()
Если я изменю запрос на «ВЫБРАТЬ адрес FROM organisation_addresses WHERE organisation_id = 85», закомментируйте query.prepare и query.addBindValue, запрос будет работать нормально. Кажется, мне не нравится мой «?».
Когда я запускаю запрос в psql, он также работает правильно.
Когда я запускаю select version () на Postgres, я получаю:
PostgreSQL 10.12 (Ubuntu 10.12-0ubuntu0.18.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, 64-bit
Я пробовал запрос в PyQt на Linux Mint 19.3, Ubuntu 20.04 и Windows 10. Тот же результат. Любые идеи?