如何使用QSqlQueryModel提取具有给定变量名称的数据?

问题描述

如何使用QsqlQueryModel来获取具有变量名的行数据并打印具有索引的值。下面是我的示例代码

from PyQt5 import Qtsql
import sqlite3

db = Qtsql.QsqlDatabase.addDatabase("QsqlITE")
db.setDatabaseName("users.db")

if db.open():
    query = Qtsql.QsqlQuery()
    query.exec_("""CREATE TABLE IF NOT EXISTS user_name(name TEXT,age TEXT,mobile TEXT,mail TEXT)""")

model = Qtsql.QsqlTableModel()
model.setTable("user_name")
model.select()

query.exec_("INSERT into user_name VALUES ('name1',29,123,'Mail1.com')")
query.exec_("INSERT into user_name VALUES ('name2',30,456,'Mail2.com')")
query.exec_("INSERT into user_name VALUES ('name3',31,789,'Mail3.com')")

search = "name2"

conn = sqlite3.connect('users.db')
cur = conn.cursor()
select_query = "SELECT * FROM user_name WHERE name = ?"
cur.execute(select_query,(search_name,))
a = cur.fetchone()
print(a)
print(a[1])
cur.close()
result is:

('name1','29','123','Mail1.com')
123
Mail1.com

我可以通过上面的代码中的“ WHERE”子句对sqlite3进行此操作。但是我想用QsqlQuery,QsqlTableModel来做到这一点。

该怎么做?

解决方法

您可能想尝试

conn = sqlite3.connect('users.db')
conn.row_factory = sqlite3.Row # This row makes the retrival dict
cur = conn.cursor()
select_query = "SELECT * FROM user_name WHERE name = ?"
cur.execute(select_query,(search_name,))
a = cur.fetchone()
print(a['name'])
cur.close()

现在您应该能够: print(a ['name'])