我正在尝试使用PyQt6.QtSql中的QSqlQuery在我的PostgreSQL数据库上创建一个表。执行下面的代码没有效果!
import sys
from PyQt6.QtSql import QSqlDatabase, QSqlQuery
con = QSqlDatabase.addDatabase('QPSQL')
con.setDatabaseName('test')
if not con.open('test', 'test'):
print("Something went wrong!")
sys.exit(1)
query = QSqlQuery()
query.exec("""
CREATE TABLE contacts(
id serial primary key,
name varchar(40) not null,
job varchar(50),
email varchar(40) not null
)
""")
print(con.tables())
字符串
我在pgAdmin 4中运行了这个查询;它工作了。然后我在其中插入了一行,并将表名改为“a-table”。
我将CREATE查询改为SELECT查询并得到结果;连接正在工作。
按原样运行上述代码会导致:
qt.core.qobject.connect: QObject::connect(QObject, Unknown): invalid nullptr parameter
['a-table']
型
PostgreSQL版本是16.1。Python版本是3.12.0。PyQt版本是6.6.1。所有运行在Windows 10 Pro 22 h2上。
1条答案
按热度按时间kcwpcxri1#
这开始是一个注解,但我想添加一些代码。
QPSQL应该可以正常工作,只要它能在某个地方找到
libpq.dll
的副本。对我来说,在Windows上,最干净的方法是安装官方的ODBC driver并将其bin
文件夹添加到我的系统PATH中。我的版本比12.02晚了几个版本,我的
libpq.dll
路径是C:\Program Files\psqlODBC\1202\bin
。如果你在pgAdmin 4目录中查找,你会看到它有自己的libpq.dll副本。如果你不想(或者不能!)编辑你的系统路径,你也可以复制
libpq.dll
到qpsqlsql.dll
所在的文件夹中。如果你能找到它!它会被埋在site-packages\qt 6_applications\Qt\plugins附近的某个地方。这里有一些使用QPSQL的代码。我通常在任何新项目中保留这些代码的副本,因为我总是忘记在新计算机上安装ODBC驱动程序和修改路径。
字符串