【发布时间】:2017-04-30 11:46:23
【问题描述】:
我认为我在使用 PyQt5 时遇到了初学者问题。我想在 MySQL 数据库上运行查询。我的查询字符串包含国际字符,如“ąśćźż”。
我正在使用Python 3.6.1、MySQL 5.7.18 和PyQt 5.8.2。
我的部分代码:
db = QSqlDatabase.addDatabase("QMYSQL")
db.setHostName("127.0.0.1")
db.setUserName("root")
db.setPassword("xxxxxx")
db.setDatabaseName("test")
db.setPort(3306)
if db.isOpen() != True:
db.open()
query = QSqlQuery()
query.exec_("INSERT INTO table1 (id) VALUES ('ąśćźżęłó1');")
db.close()
print(query.lastError().text())
print(query.lastQuery())
输出:
Incorrect string value: '\xB9\x9C\xE6\x9F\xBF\xEA...' for column 'id' at row 1 QMYSQL: Unable to execute query
INSERT INTO table1 (id) VALUES ('ąśćźżęłó1');
表的创建语句:
CREATE TABLE `table1` (
`id` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
mysql 中的所有字符集和排序规则变量都设置为 utf8mb4。
当我使用 PyQt5 以外的其他包连接到数据库时 - PyMySQL,我没有遇到这个问题。在PyMySQL 中,我建立了与charset = "utf8mb4" 的连接作为连接字符串的一部分。我现在不知道如何用QSqlDatabase 重新喜欢这个。
你能帮我解决这个问题吗?
【问题讨论】: