- class QSqlQuery#
QSqlQuery
类提供了一种执行和操作 SQL 语句的途径。 更多...概述#
方法#
def
__init__()
def
addBindValue()
def
at()
def
bindValue()
def
boundValue()
def
boundValueName()
定义
clear()
定义
driver()
定义
exec()
定义
execBatch()
定义
exec_()
定义
finish()
定义
first()
定义
isActive()
定义
isNull()
定义
isSelect()
定义
isValid()
定义
last()
定义
lastError()
定义
lastQuery()
定义
next()
定义
nextResult()
定义
prepare()
定义
previous()
定义
record()
定义
result()
定义
seek()
定义
size()
定义
swap()
定义
value()
注意
本文档可能包含自动从C++翻译到Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译存在问题,您也可以通过在https:/bugreports.qt.io个项目/PYSIDE上创建工单来告诉我们。
详细描述#
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
QSqlQuery
封装了在QSqlDatabase
上执行的SQL查询创建、导航和检索数据所涉及的功能。它可以用来执行DML(数据操作语言)语句,如SELECT
、INSERT
、UPDATE
和DELETE
,以及DDL(数据定义语言)语句,如CREATE
TABLE
。它还可以用来执行非标准SQL的数据库特定命令(例如,PostgreSQL的SET DATESTYLE=ISO
)。成功执行的SQL语句将查询的状态设置为活动状态,所以
isActive()
返回true
。否则,查询的状态设置为非活动状态。在两种情况下,当执行新的SQL语句时,查询都会定位到一个无效的记录。活动查询必须定位到一个有效记录(以便isValid()
返回true
),然后才能检索值。对于某些数据库,如果在调用
commit()
或者rollback()
时存在一个包含SELECT
语句的活跃查询,则提交或回滚将失败。有关详细信息,请参阅isActive()
。记录导航是通过以下函数进行的
这些函数允许程序员在查询返回的记录中向前、向后或任意移动。如果您只需要向前移动结果(例如,通过使用
next()
),则可以使用setForwardOnly()
,这将显著减少内存开销并提高某些数据库的性能。一旦活跃查询定位到有效记录,可以使用value()
获取数据。所有数据均通过 QVariants 从 SQL 后端传输。例如
query = QSqlQuery("SELECT country FROM artist") while query.next(): country = query.value(0).toString() doSomething(country)
要访问查询返回的数据,请使用 value(int)。通过传递字段的索引来访问
SELECT
语句返回的数据中的每个字段,索引从 0 开始。这使得使用SELECT *
查询不可取,因为返回字段的顺序是不确定的。为了提高效率,没有按名称访问字段的函数(除非您使用预定义查询并按名称绑定参数,如下所述)。为了将字段名称转换为索引,请使用
record()
。例如indexOf()
。query = QSqlQuery("SELECT * FROM artist") fieldNo = query.record().indexOf("country") while query.next(): country = query.value(fieldNo).toString() doSomething(country)
QSqlQuery
支持预定义查询执行和参数值绑定到占位符。某些数据库不支持这些功能,因此对于这些数据库,Qt 对所需功能进行仿真。例如,Oracle 和 ODBC 驱动程序具有适当的预定义查询支持,Qt 也利用了它;但是对于没有这种支持的数据库,Qt 实现了该功能,例如,通过在执行查询时用实际值替换占位符来执行此操作。使用numRowsAffected()
查找受非SELECT
查询影响的行数,使用size()
查找受SELECT
影响的行数。Oracle 数据库使用冒号名称语法来标识占位符,例如:
:name
。ODBC 仅仅使用?
字符。Qt 支持这两种语法,但限制是您不能在同一个查询中混合它们。您可以使用
boundValues()
获取单个变量中所有字段的值。注意
并非所有SQL操作都支持绑定值。请参考数据库系统文档以检查它们的可用性。
绑定值的方法#
以下是使用四种不同的绑定方法的相同示例,以及将值绑定到存储过程的示例。
名为绑定使用命名占位符
query = QSqlQuery() query.prepare("INSERT INTO person (id, forename, surname) " "VALUES (:id, :forename, :surname)") query.bindValue(":id", 1001) query.bindValue(":forename", "Bart") query.bindValue(":surname", "Simpson") query.exec()
位置绑定使用命名占位符
query = QSqlQuery() query.prepare("INSERT INTO person (id, forename, surname) " "VALUES (:id, :forename, :surname)") query.bindValue(0, 1001) query.bindValue(1, "Bart") query.bindValue(2, "Simpson") query.exec()
使用位置占位符绑定值(版本1)
query = QSqlQuery() query.prepare("INSERT INTO person (id, forename, surname) " "VALUES (?, ?, ?)") query.bindValue(0, 1001) query.bindValue(1, "Bart") query.bindValue(2, "Simpson") query.exec()
使用位置占位符绑定值(版本2)
query = QSqlQuery() query.prepare("INSERT INTO person (id, forename, surname) " "VALUES (?, ?, ?)") query.addBindValue(1001) query.addBindValue("Bart") query.addBindValue("Simpson") query.exec()
将值绑定到存储过程
此代码调用名为
AsciiToInt()
的存储过程,通过其 in 参数传递一个字符,并从 out 参数获取它的结果。query = QSqlQuery() query.prepare("CALL AsciiToInt(?, ?)") query.bindValue(0, "A") query.bindValue(1, 0, QSql.Out) query.exec() i = query.boundValue(1).toInt() # i is 65
请注意,未绑定参数将保留其值。
使用 return 语句返回值或返回多个结果集的存储过程不完全受支持。具体详情请参阅 。
警告
必须在创建
QSqlQuery
之前加载 SQL 驱动程序和打开连接。此外,在查询存在时连接必须保持打开;否则,QSqlQuery
的行为是未定义的。另请参阅
QSqlDatabase
QSqlQueryModel
QSqlTableModel
QVariant
- class BatchExecutionMode#
常量
描述
QSqlQuery.ValuesAsRows
更新多行。将 QVariantList 中的每个条目视为更新下一行的值。
QSqlQuery.ValuesAsColumns
更新单行。将 QVariantList 中的每个条目视为数组类型的一个值。
- __init__(db)#
- 参数:
db –
QSqlDatabase
使用数据库 db 构造
QSqlQuery
对象。如果 db 无效,则使用应用程序的默认数据库。另请参阅
- __init__(r)
- 参数:
r –
QSqlResult
构建一个使用
QSqlQuery
对象与数据库通信的_QSqlResult
result
。- __init__([query=""[, db=QSqlDatabase()]])
- 参数:
query – 字符串
db –
QSqlDatabase
使用 SQL
query
和数据库db
构建一个QSqlQuery
对象。如果未指定db
或无效,应用程序的默认数据库将被使用。如果query
不是空字符串,它将被执行。另请参阅
- __init__(other)
- 参数:
other –
QSqlQuery
注意
此函数已弃用。
构建
other
的副本。QSqlQuery
无法有意义地复制。预处理语句、绑定值等将无法正确工作,具体取决于您的数据库驱动程序(例如,副本的更改将影响原始文档)。将QSqlQuery
视为只能移动的类型。- addBindValue(val[, type=QSql.In])#
- 参数:
val – 对象
type –
ParamTypeFlag
的组合
在按位置值绑定时,将值
val
添加到值的列表中。addBindValue() 调用的顺序决定了在预处理查询中什么占位符将被绑定到值。如果paramType
是Out
或InOut
,在exec()
调用后,占位符将被数据库中的数据覆盖。要绑定 NULL 值,请使用 null QVariant;例如,如果您正在绑定字符串,请使用
QVariant(QMetaType::fromType<QString>())
。- at()#
- 返回类型::
int
返回查询的当前内部位置。第一条记录在位置零。如果位置无效,则函数返回
BeforeFirstRow
或AfterLastRow
,它们是特殊的负值。- bindValue(placeholder, val[, type=QSql.In])#
- 参数:
placeholder – str
val – 对象
type –
ParamTypeFlag
的组合
将默认占位符
placeholder
绑定到语句中的值val
。请注意,指定占位符名称时必须包含占位符标记(例如:
)。如果参数类型paramType
为Out
或InOut
,则占位符将在执行exec()
调用后用数据库中的数据覆盖。在这种情况下,必须预分配足够的空间以存储结果。要绑定 NULL 值,请使用 null QVariant;例如,如果您正在绑定字符串,请使用
QVariant(QMetaType::fromType<QString>())
。- bindValue(pos, val[, type=QSql.In])
- 参数:
pos – int
val – 对象
type –
ParamTypeFlag
的组合
将已准备语句中的占位符(位置
pos
)绑定到值val
。字段编号从0开始。如果paramType
为Out
或InOut
,则在exec()
调用后,占位符将被数据库中的数据覆盖。- boundValue(placeholder)
- 参数:
placeholder – str
- 返回类型::
object
返回指定占位符的值。
- boundValue(pos)
- 参数:
pos – int
- 返回类型::
object
返回位置
pos
所占位符的值。另请参阅
- boundValueName(pos)
- 参数:
pos – int
- 返回类型::
str
返回位置
pos
的绑定值名称。列表的顺序是绑定顺序,无论是否使用命名绑定或位置绑定。
另请参阅
- boundValueNames()
- 返回类型::
list of strings
返回所有绑定值的名称。
列表的顺序是绑定顺序,无论是否使用命名绑定或位置绑定。
- boundValues()#
- 返回类型::
.枚举类型QVariant的列表
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
返回绑定的值的列表。
列表的顺序是绑定顺序,无论是否使用命名绑定或位置绑定。
绑定的值可以通过以下方式进行查看
list = query.boundValues() for i in range(0, list.size()): print(i, ":", list.at(i).toString())
- clear()#
清空结果集并释放查询持有的任何资源。将查询状态设置为非活动。通常不需要调用此函数。
- driver()#
- 返回类型::
返回与查询关联的数据库驱动程序。
- exec()#
- 返回类型::
bool
执行之前准备的SQL查询。如果查询执行成功则返回
true
;否则返回false
。注意,当调用 exec() 时将重置此查询的最后一个错误。
- exec(query)
- 参数:
query – 字符串
- 返回类型::
bool
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
执行
query
中的SQL。如果查询成功则返回true
并将查询状态设置为active
;否则返回false
。Thequery
字符串必须使用适用于要查询的SQL数据库的语法(例如,标准SQL)。查询执行后,查询在无效记录上定位,在检索数据值之前必须导航到有效记录(例如,使用
next()
)。请注意,每次调用
exec()
时,该查询的最后错误都会重置。对于 SQLite,查询字符串每次只能包含一条语句。如果提供了多条语句,函数会返回
false
。示例
query = QSqlQuery() query.exec("INSERT INTO employee (id, name, salary) " "VALUES (1001, 'Thad Beaumont', 65000)")
- execBatch([mode=QSqlQuery.BatchExecutionMode.ValuesAsRows])#
- 参数:
mode –
BatchExecutionMode
- 返回类型::
bool
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
执行一个之前准备好的 SQL 查询,以批处理方式。所有绑定参数都应该是变体列表。如果数据库不支持批处理执行,驱动程序将使用传统的
exec()
调用来模拟。如果查询成功执行则返回
true
;否则返回false
。示例
q = QSqlQuery() q.prepare("insert into myTable values (?, ?)") ints = QVariantList() ints << 1 << 2 << 3 << 4 q.addBindValue(ints) names = QVariantList() names << "Harald" << "Boris" << "Trond" << QVariant(QMetaType.fromType<QString>()) q.addBindValue(names) if not q.execBatch(): print(q.lastError())
上面的示例向
myTable
插入了四行新数据。1 Harald 2 Boris 3 Trond 4 NULL
要绑定 NULL 值,需要向绑定的 QVariantList 中添加相关类型的 null QVariant;例如,如果使用字符串,应使用
QVariant(QMetaType::fromType<QString>())
。注意
每个绑定的 QVariantList 必须包含相同数量的变体。
注意
列表中 QVariants 的类型不得更改。例如,你无法在 QVariantList 内混合整数和字符串变体。
mode 参数指示如何解释绑定的 QVariantList。如果 mode 是
ValuesAsRows
,则 QVariantList 内的每个变体都会被解释为新行的值。在 Oracle 驱动程序中,ValuesAsColumns
是一个特殊情况。在此模式下,QVariantList 内的每个条目都会被解释为存储过程内部 IN 或 OUT 值的数组值。注意,这仅适用于 IN 或 OUT 值是只有一列的基本类型的表格类型,例如TYPE myType IS TABLE OF VARCHAR(64) INDEX BY BINARY_INTEGER;
- exec_()#
- 返回类型::
bool
- exec_(arg__1)
- 参数:
arg__1 – 字符串
- 返回类型::
bool
- executedQuery()#
- 返回类型::
str
返回最后一次成功执行的查询。
在大多数情况下,此函数返回与
lastQuery()
相同的字符串。如果一个带有占位符的预编译查询在不支持此操作的数据库管理系统中执行,则此查询的预编译将进行模拟。原始查询中的占位符被其绑定值替换以形成一个新查询。此函数返回修改后的查询。这主要用于调试目的。另请参阅
- finish()#
指示数据库驱动程序,在重新执行之前,无需从该查询中检索更多数据。通常不需要调用此函数,但如果您打算稍后重用查询,则这可能有助于释放资源,例如锁或游标。
将查询设置为非活动状态。绑定值保留其值。
另请参阅
- first()#
- 返回类型::
bool
检索结果中的第一条记录(如果有的话),并将查询定位到检索到的记录。注意,结果必须在
active
状态,并且在调用此函数之前必须返回 true 的值由isSelect()
返回才不会执行任何操作并返回 false。如果成功则返回true
。如果失败,则查询位置将被设置为无效位置,并返回 false。- isActive()#
- 返回类型::
bool
返回
true
如果查询是 活跃的。当一个QSqlQuery
对象成功执行但尚未完成时,它被称作活跃的。当你完成一个活跃的查询时,你可以通过调用finish()
或clear()
来使查询变为非活跃,或者你可以删除QSqlQuery
实例。注意
特别值得注意的是,一个活跃的查询是一个
SELECT
语句。对于一些支持事务的数据库,一个活跃的SELECT
语句可以导致commit()
或rollback()
失败,因此在提交或回滚之前,你应该使用上述列出的方法之一来使你的活跃的SELECT
语句查询变为非活跃。另请参阅
- isForwardOnly()#
- 返回类型::
bool
如果你只能向前滚动结果集,则返回
true
;否则返回false
。另请参阅
- isNull(name)#
- 参数:
name – 字符串
- 返回类型::
bool
这是一个重载函数。
如果没有字段具有此
name
,则返回true
;否则返回对应字段索引的isNull
(int index)。这个重载版本比
isNull()
效率更低。- isNull(field)
- 参数:
field – int
- 返回类型::
bool
如果查询未
active
,查询未定位到有效记录,没有此类field
,或field
是空值,则返回true
;否则返回false
。请注意,对于某些驱动程序,尝试检索数据之后,isNull() 才能返回准确的信息。另请参阅
- isPositionalBindingEnabled()#
- 返回类型::
bool
如果当前启用了位置绑定,则返回
true
。- isSelect()#
- 返回类型::
bool
如果当前查询是
SELECT
语句,则返回true
;否则返回false
。- isValid()#
- 返回类型::
bool
如果查询当前定位在有效记录上,则返回
true
;否则返回false
。- last()#
- 返回类型::
bool
如果存在,检索结果中的最后一条记录,并将查询定位到检索的记录。请注意,结果必须处于
active
状态,并且在调用此函数之前必须返回 true,或者它将不执行任何操作并返回 false。如果成功,则返回true
。如果失败,查询位置设置为一个无效的位置,并返回 false。返回关于查询最后发生的错误(如果有的话)的错误信息。
另请参阅
- lastInsertId()#
- 返回类型::
object
如果数据库支持,返回最后插入行的对象ID。如果没有插入任何值或者数据库没有返回ID,将返回无效的QVariant。如果插入操作影响了多行,行为是未定义的。
对于MySQL数据库,将返回行的自增字段。
- lastQuery()#
- 返回类型::
str
返回当前正在使用的查询文本,如果没有当前查询文本,则返回空字符串。
另请参阅
- next()#
- 返回类型::
bool
如果可用,检索结果中的下一个记录并将其定位在检索的记录上。请注意,结果必须处于
active
状态,并且在调用此函数之前必须调用isSelect()
函数返回true,否则它将不执行任何操作并返回false。以下规则适用:
如果结果目前位于第一条记录之前,例如在查询执行后立即,将尝试检索第一条记录。
如果结果目前位于最后一条记录之后,则没有变化,返回false。
如果结果位于中间,将尝试检索下一条记录。
如果无法检索记录,将结果定位在最后一条记录之后,并返回false。如果成功检索记录,则返回true。
- nextResult()#
- 返回类型::
bool
忽略当前结果集,并在可用时导航到下一个结果集。
某些数据库能够为存储过程或SQL批次(包含多个语句的查询字符串)返回多个结果集。如果在执行查询后可用多个结果集,则可以使用此功能导航到下一个结果集。
如果可用新结果集,此功能将返回true。查询将重新定位到新结果集中的无效记录,必须在获取数据值之前将其导航到有效记录。如果不可用新结果集,则函数返回
false
,并将查询设置为实现空闲。在任何情况下,旧结果集都将被丢弃。当其中一个语句不是SELECT语句时,可能可以获得受影响行数的计数而不是结果集。
请注意,某些数据库,例如Microsoft SQL Server,在处理多个结果集时需要非可滚动游标。某些数据库可能会一次性执行所有语句,而其他数据库可能会延迟执行直到结果集被实际访问,某些数据库在SQL批次中可能对允许使用的语句有约束。
- numRowsAffected()#
- 返回类型::
int
返回结果 SQL 语句影响的行数,如果无法确定则返回 -1。注意,对于
SELECT
语句,该值未定义;请使用size()
代替。如果查询不是active
的,返回 -1。另请参阅
返回当前精度策略。
- prepare(query)#
- 参数:
query – 字符串
- 返回类型::
bool
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
准备要执行的 SQL 查询
query
。如果查询准备成功,则返回true
;否则返回false
。查询可能包含用于绑定值的占位符。支持 Oracle 风格的冒号名称 (例如,
:surname
) 和 ODBC 风格的 (?
) 占位符;但它们不能在同一个查询中混用。请参阅Detailed Description
以获取示例。可移植性注释:某些数据库选择在第一次执行查询时才准备查询。在这种情况下,准备语法错误的查询会成功,但后续的每个
exec()
都将失败。当数据库不支持直接使用命名占位符时,占位符只能包含字符范围 [a-zA-Z0-9_]。对于 SQLite,查询字符串每次只能包含一条语句。如果提供了多条语句,函数会返回
false
。示例
query = QSqlQuery() query.prepare("INSERT INTO person (id, forename, surname) " "VALUES (:id, :forename, :surname)") query.bindValue(":id", 1001) query.bindValue(":forename", "Bart") query.bindValue(":surname", "Simpson") query.exec()
- previous()#
- 返回类型::
bool
如果可用,检索结果中的上一条记录并将查询定位到检索的记录上。注意,结果必须在
active
状态,并且必须调用此函数之前isSelect()
返回 true,否则它将不执行任何操作并返回 false。以下规则适用:
如果结果当前位于第一条记录之前,则没有变化,返回false。
如果结果当前位于最后一条记录之后,则尝试检索最后一条记录。
如果结果位于中间某处,则尝试检索上一条记录。
如果无法检索记录,结果位置将移至第一条记录之前,并返回false。如果成功检索到记录,则返回true。
- record()#
- 返回类型::
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
返回一个包含当前查询字段信息的
QSqlRecord
。如果查询指向有效行(isValid()
返回 true),则记录填充行值。如果没有活动查询(isActive()
返回 false),则返回空记录。要从查询中检索值,应使用
value()
,因为其基于索引的查找更快。在下面的示例中,执行了
SELECT * FROM
查询。由于列的顺序未定义,因此使用indexOf()
获取列的索引。q = QSqlQuery("select * from employees") rec = q.record() print("Number of columns: ", rec.count()) nameCol = rec.indexOf("name") # index of the field "name" while q.next(): print(q.value(nameCol).toString()) # output all names
另请参阅
- result()#
- 返回类型::
返回与查询关联的结果。
- seek(i[, relative=false])#
- 参数:
i – int
relative – bool
- 返回类型::
bool
检索位置
index
的记录,如果存在,则查询定位在检索到的记录上。第一条记录在位置 0。请注意,在调用此函数之前,查询必须处于active
状态,且isSelect()
必须返回 true。如果
relative
是 false(默认值),适用以下规则:如果
index
是负数,结果定位在第一条记录之前,并返回 false。否则,尝试移动到位置
index
的记录。如果无法检索到位置index
的记录,结果定位在最后一条记录之后,并返回 false。如果成功检索到记录,则返回 true。
如果
relative
是 true,适用以下规则:如果结果 Currently 定位在第一条记录之前,并且
如果
index
是负数或零,则没有任何变化,并返回 false。如果
index
是正数,则尝试将结果定位在绝对位置index
- 1,遵循上述非相对搜索的相同规则。
如果结果 Currently 定位在最后一条记录之后,并且
如果
index
是正数或零,则没有任何变化,并返回 false。如果
index
是负数,则尝试将结果定位在最后一条记录之后index
个相对位置,遵循以下规则。
如果结果 Currently 位于中间,并且相对偏移
index
将结果移动到零以下,则结果定位在第一条记录之前并返回 false。否则,尝试将结果移动到当前位置之前的
index
条记录(如果index
是负数,则为当前位置之后的index
条记录)。如果无法检索到偏移index
的记录,如果index
>= 0,则结果定位在最后一条记录之后,如果index
是负数,则结果定位在第一条记录之前,并返回 false。如果成功检索到记录,则返回 true。
- setForwardOnly(forward)#
- 参数:
forward – 布尔型
将单向模式设置为
forward
。如果forward
为 true,则只能使用next()
和seek()
正值进行结果导航。由于结果无需缓存,单向模式(取决于驱动程序)可能更节省内存,同时也能在某些数据库上提高性能。为了使其生效,必须在查询准备或执行之前调用
setForwardOnly()
。请注意,接受查询和数据库作为参数的构造函数可能会执行该查询。默认情况下,单向模式是关闭的。
将单向模式设置为 false 是对数据库引擎的建议,数据库引擎将决定结果集是单向还是可滚动。
isForwardOnly()
将始终返回结果集的正确状态。注意
在查询执行后将调用 setForwardOnly 会导致最坏情况下崩溃的不预期结果。
注意
为了确保单向查询成功完成,应用程序应在查询执行以及导航查询结果后检查
lastError()
以确定没有错误。警告
PostgreSQL:在单向模式下导航查询结果时,不要在相同的数据库连接上执行任何其他 SQL 命令。这将导致查询结果丢失。
- setNumericalPrecisionPolicy(precisionPolicy)#
- 参数:
precisionPolicy –
NumericalPrecisionPolicy
指示数据库驱动返回具有由
precisionPolicy
指定的精度的数值。例如,Oracle 驱动可以将数值作为字符串检索以防止精度丢失。如果高精度不重要,可以使用此方法通过绕过字符串转换来提高执行速度。
注意:不支持以低精度获取数值的驱动将忽略精度策略。您可以使用
hasFeature()
查询驱动程序是否支持此功能。注意:设置精度策略不会影响当前活动的查询。调用
exec(QString)
或prepare()
来激活策略。- setPositionalBindingEnabled(enable)#
- 参数:
enable – bool
根据
enable
启用或禁用此查询的定位绑定(默认值为true
)。禁用定位绑定对于查询本身包含一个‘?’很有用,这个‘?’不应被视为定位绑定参数,例如,作为PostgreSQL数据库的JSON运算符。当数据库本支持以问号作为定位绑定时,此函数将没有效果(另请参阅
PositionalPlaceholders
)。- size()#
- 返回类型::
int
返回结果的尺寸(返回的行数),或者如果无法确定尺寸或数据库不支持报告查询尺寸信息,则返回-1。请注意,对于非
SELECT
语句(isSelect()
返回false
),size() 将返回-1。如果查询不是活动的(isActive()
返回false
),则返回-1。为了确定非
SELECT
语句影响的行数,请使用numRowsAffected()
。交换
other
到此对象。此操作非常快速且永远不会失败。- value(name)#
- 参数:
name – 字符串
- 返回类型::
object
这是一个重载函数。
返回当前记录中名为
name
的字段的值。如果字段name
不存在则返回无效的变量。此重载比
value()
的效率低。- value(i)
- 参数:
i – int
- 返回类型::
object
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
返回当前记录中
index
字段的值。字段从左到右按
SELECT
语句中的文本编号,例如forename, = SELECT()
字段 0 是
forename
和字段 1 是surname
。使用SELECT *
不推荐,因为查询中字段的顺序是未定义的。如果字段
index
不存在,或者查询处于无效状态,或查询位于无效记录上,则返回无效的 QVariant。