问题描述
如何使用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'])