PySide6.QtSql.QSqlQuery¶
- class QSqlQuery¶
QSqlQuery
类提供了一种执行和操作 SQL 语句的方法。更多…概要¶
属性¶
方法¶
def
__init__()
def
addBindValue()
def
at()
def
bindValue()
def
boundValue()
def
boundValueName()
def
boundValues()
def
clear()
def
driver()
def
exec()
def
execBatch()
def
exec_()
def
executedQuery()
def
finish()
def
first()
def
isActive()
def
isForwardOnly()
def
isNull()
def
isSelect()
def
isValid()
def
last()
def
lastError()
def
lastInsertId()
def
lastQuery()
def
next()
def
nextResult()
def
prepare()
def
previous()
def
record()
def
result()
def
seek()
def
setForwardOnly()
def
size()
def
swap()
def
value()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/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()
检索数据。所有数据都使用QVariant从SQL后端传输。例如:
query = QSqlQuery("SELECT country FROM artist") while query.next(): country = query.value(0).toString() doSomething(country)
要访问查询返回的数据,请使用value(int)。通过传递字段在语句中的位置(从0开始)来访问
SELECT
语句返回的数据中的每个字段。这使得使用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()
的存储过程,通过其输入参数传递一个字符,并在输出参数中获取其结果。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语句返回值或返回多个结果集的存储过程不完全支持。具体详情请参见SQL Database Drivers。
警告
在创建
QSqlQuery
之前,您必须加载SQL驱动程序并打开连接。此外,在查询存在期间,连接必须保持打开状态;否则,QSqlQuery
的行为将是未定义的。另请参阅
QSqlDatabase
QSqlQueryModel
QSqlTableModel
QVariant
- class BatchExecutionMode¶
常量
描述
QSqlQuery.ValuesAsRows
更新多行。将QVariantList中的每个条目视为更新下一行的值。
QSqlQuery.ValuesAsColumns
更新单行。将QVariantList中的每个条目视为数组类型的单个值。
注意
当使用
from __feature__ import true_property
时,属性可以直接使用,否则通过访问器函数使用。- property forwardOnlyᅟ: bool¶
此属性控制仅向前模式。如果
forward
为真,则仅允许使用next()
和带有正值的seek()
来导航结果。仅向前模式可以(取决于驱动程序)更节省内存,因为结果不需要缓存。它还可以提高某些数据库的性能。为了实现这一点,您必须在查询准备或执行之前调用
setForwardOnly()
。请注意,接受查询和数据库的构造函数可能会执行查询。默认情况下,仅向前模式是关闭的。
将forward only设置为false是对数据库引擎的建议,数据库引擎最终决定结果集是仅向前还是可滚动的。
isForwardOnly()
将始终返回结果集的正确状态。注意
在查询执行后调用
setForwardOnly
可能会导致意外结果,甚至崩溃。注意
为了确保仅向前查询成功完成,应用程序不仅应在执行查询后检查
lastError()
是否有错误,还应在导航查询结果后进行检查。- Access functions:
- property numericalPrecisionPolicyᅟ: QSql.NumericalPrecisionPolicy¶
指示数据库驱动程序返回具有由
precisionPolicy
指定的精度的数值。例如,Oracle驱动程序可以将数值作为字符串检索,以防止精度损失。如果高精度不重要,可以使用此方法通过绕过字符串转换来提高执行速度。
注意:不支持以低精度获取数值的驱动程序将忽略精度策略。您可以使用
hasFeature()
来查找驱动程序是否支持此功能。注意:设置精度策略不会影响当前活动的查询。调用
exec(QString)
或prepare()
以激活策略。- Access functions:
- property positionalBindingEnabledᅟ: bool¶
此属性根据
enable
(默认为true
)启用或禁用此查询的位置binding
。如果查询本身包含一个不应作为位置绑定参数处理但例如作为PostgreSQL数据库的JSON操作符的‘?’,则禁用位置绑定非常有用。当数据库原生支持使用问号的位置绑定时,此属性将无效(另请参阅
PositionalPlaceholders
)。- Access functions:
- __init__(r)¶
- Parameters:
r –
QSqlResult
构造一个
QSqlQuery
对象,该对象使用QSqlResult
result
与数据库进行通信。- __init__(db)
- Parameters:
数据库 –
QSqlDatabase
使用数据库
db
构造一个QSqlQuery
对象。如果db
无效,将使用应用程序的默认数据库。另请参阅
- __init__(other)
- Parameters:
其他 –
QSqlQuery
注意
此函数已弃用。
构造
other
的副本。QSqlQuery
不能被有意义地复制。根据你的数据库驱动程序(例如,更改副本会影响原始对象),预编译语句、绑定值等将无法正常工作。请将QSqlQuery
视为仅可移动的类型。- __init__([query=""[, db=QSqlDatabase()]])
- Parameters:
query – str
db –
QSqlDatabase
使用SQL
query
和数据库db
构造一个QSqlQuery
对象。如果未指定db
,或者无效,则使用应用程序的默认数据库。如果query
不是空字符串,它将被执行。另请参阅
- addBindValue(val[, type=QSql.In])¶
- Parameters:
val – 对象
type –
ParamTypeFlag
的组合
在使用位置值绑定时,将值
val
添加到值列表中。addBindValue()调用的顺序决定了在准备好的查询中,值将绑定到哪个占位符。如果paramType
是Out
或InOut
,则在exec()
调用后,占位符将被数据库中的数据覆盖。要绑定一个NULL值,请使用一个空的QVariant;例如,如果你正在绑定一个字符串,请使用
QVariant(QMetaType::fromType
。()) - at()¶
- Return type:
整数
返回查询的当前内部位置。第一条记录的位置为零。如果位置无效,函数将返回
BeforeFirstRow
或AfterLastRow
,这些是特殊的负值。- bindValue(placeholder, val[, type=QSql.In])¶
- Parameters:
placeholder – str
val – 对象
type –
ParamTypeFlag
的组合
将占位符
placeholder
绑定到预编译语句中的值val
。请注意,在指定占位符名称时,必须包含占位符标记(例如:
)。如果paramType
是Out
或InOut
,则在exec()
调用后,占位符将被数据库中的数据覆盖。在这种情况下,必须预先分配足够的空间以存储结果。要绑定一个NULL值,请使用一个空的QVariant;例如,如果你正在绑定一个字符串,请使用
QVariant(QMetaType::fromType<QString>())
。- bindValue(pos, val[, type=QSql.In])
- Parameters:
pos – 整数
val – 对象
type –
ParamTypeFlag
的组合
将位置
pos
的占位符绑定到预编译语句中的值val
。字段编号从0开始。如果paramType
是Out
或InOut
,则在exec()
调用后,占位符将被数据库中的数据覆盖。- boundValue(placeholder)¶
- Parameters:
placeholder – str
- Return type:
对象
返回
placeholder
的值。- boundValue(pos)
- Parameters:
pos – 整数
- Return type:
对象
返回位置
pos
的占位符的值。另请参阅
- boundValueName(pos)¶
- Parameters:
pos – 整数
- Return type:
字符串
返回位置
pos
处的绑定值名称。列表的顺序是绑定顺序,无论使用的是命名绑定还是位置绑定。
另请参阅
- boundValueNames()¶
- Return type:
字符串列表
返回所有绑定值的名称。
列表的顺序是绑定顺序,无论使用的是命名绑定还是位置绑定。
- boundValues()¶
- Return type:
.QVariant 列表
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
返回绑定值的列表。
列表的顺序是绑定顺序,无论使用的是命名绑定还是位置绑定。
可以通过以下方式检查绑定的值:
list = query.boundValues() for i in range(0, list.size()): print(i, ":", list.at(i).toString())
- clear()¶
清除结果集并释放查询持有的任何资源。将查询状态设置为非活动状态。您很少需要调用此函数。
- driver()¶
- Return type:
返回与查询关联的数据库驱动程序。
- exec()¶
- Return type:
布尔
执行先前准备好的SQL查询。如果查询成功执行,则返回
true
;否则返回false
。请注意,当调用exec()时,此查询的最后一个错误将被重置。
- exec(query)
- Parameters:
query – str
- Return type:
布尔
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
执行
query
中的SQL。如果查询成功,返回true
并将查询状态设置为active
;否则返回false
。query
字符串必须使用适合被查询的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])¶
- Parameters:
mode –
BatchExecutionMode
- Return type:
布尔
警告
本节包含从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值,必须将相关类型的空QVariant添加到绑定的QVariantList中;例如,如果您使用的是字符串,则应使用
QVariant(QMetaType::fromType
。()) 注意
每个绑定的QVariantList必须包含相同数量的变体。
注意
列表中的QVariant类型不能改变。例如,你不能在QVariantList中混合整数和字符串变体。
mode
参数指示绑定的 QVariantList 将如何被解释。如果mode
是ValuesAsRows
,QVariantList 中的每个变体将被解释为新行的值。ValuesAsColumns
是 Oracle 驱动程序的一个特殊情况。在这种模式下,QVariantList 中的每个条目将被解释为存储过程中 IN 或 OUT 值的数组值。请注意,这仅在 IN 或 OUT 值是由仅包含一个基本类型列的表类型组成时才有效,例如TYPE myType IS TABLE OF VARCHAR(64) INDEX BY BINARY_INTEGER;
- exec_()¶
- Return type:
布尔
- exec_(arg__1)
- Parameters:
arg__1 – str
- Return type:
布尔
- executedQuery()¶
- Return type:
字符串
返回最后成功执行的查询。
在大多数情况下,此函数返回与
lastQuery()
相同的字符串。如果在不支持占位符的DBMS上执行带有占位符的预准备查询,则会模拟此查询的准备过程。原始查询中的占位符将被其绑定值替换以形成新的查询。此函数返回修改后的查询。它主要用于调试目的。另请参阅
- finish()¶
指示数据库驱动程序,在重新执行此查询之前,不会从该查询中获取更多数据。通常不需要调用此函数,但如果您打算稍后重新使用查询,则可能有助于释放诸如锁或游标之类的资源。
将查询设置为非活动状态。绑定的值保留其值。
另请参阅
- first()¶
- Return type:
布尔
检索结果中的第一条记录(如果存在),并将查询定位在检索到的记录上。请注意,在调用此函数之前,结果必须处于
active
状态,并且isSelect()
必须返回true,否则它将不执行任何操作并返回false。如果成功,返回true
。如果不成功,查询位置将设置为无效位置并返回false。- isActive()¶
- Return type:
布尔
如果查询是活动的,则返回
true
。一个活动的QSqlQuery
是指已经成功exec()'d
但尚未完成的查询。当你完成一个活动查询时,你可以通过调用finish()
或clear()
使查询变为非活动状态,或者你可以删除QSqlQuery
实例。注意
特别值得关注的是一个活跃的查询,它是一个
SELECT
语句。对于一些支持事务的数据库,一个活跃的SELECT
语句查询可能会导致commit()
或rollback()
失败,因此在提交或回滚之前,你应该使用上面列出的方法之一使你的活跃SELECT
语句查询变为不活跃。另请参阅
- isForwardOnly()¶
- Return type:
布尔
返回
forwardOnly
。属性
forwardOnlyᅟ
的获取器。- isNull(name)¶
- Parameters:
name – str
- Return type:
布尔
这是一个重载函数。
如果没有这个
name
的字段,则返回true
;否则返回对应字段索引的isNull
(int index)。这个重载的效率低于
isNull()
注意
在Qt 6.8之前的版本中,此函数接受的是QString,而不是QAnyStringView。
- isNull(field)
- Parameters:
字段 – 整数
- Return type:
布尔
如果查询不是
active
,查询未定位在有效记录上,没有这样的field
,或者field
为空,则返回true
;否则返回false
。请注意,对于某些驱动程序,isNull()在尝试检索数据之前不会返回准确的信息。另请参阅
- isPositionalBindingEnabled()¶
- Return type:
布尔
返回
positionalBindingEnabled
。另请参阅
positionalBindingEnabled
属性
positionalBindingEnabledᅟ
的获取器。- isSelect()¶
- Return type:
布尔
如果当前查询是
SELECT
语句,则返回true
;否则返回false
。- isValid()¶
- Return type:
布尔
如果查询当前位于有效记录上,则返回
true
;否则返回false
。- last()¶
- Return type:
布尔
检索结果中的最后一条记录(如果存在),并将查询定位在检索到的记录上。请注意,在调用此函数之前,结果必须处于
active
状态,并且isSelect()
必须返回true,否则它将不执行任何操作并返回false。如果成功,则返回true
。如果不成功,查询位置将设置为无效位置并返回false。返回有关此查询发生的最后一个错误(如果有)的错误信息。
另请参阅
- lastInsertId()¶
- Return type:
对象
如果数据库支持,返回最近插入行的对象ID。如果查询未插入任何值或数据库未返回ID,则将返回无效的QVariant。如果插入操作涉及多行,则行为未定义。
对于MySQL数据库,将返回行的自动递增字段。
- lastQuery()¶
- Return type:
字符串
返回当前正在使用的查询文本,如果没有当前查询文本,则返回空字符串。
另请参阅
- next()¶
- Return type:
布尔
检索结果中的下一条记录(如果可用),并将查询定位在检索到的记录上。请注意,在调用此函数之前,结果必须处于
active
状态,并且isSelect()
必须返回true,否则它将不执行任何操作并返回false。以下规则适用:
如果结果当前位于第一条记录之前,例如在查询执行后立即尝试检索第一条记录。
如果结果当前位于最后一条记录之后,则没有变化并返回 false。
如果结果位于中间某个位置,将尝试检索下一条记录。
如果无法检索到记录,结果将定位在最后一条记录之后并返回false。如果成功检索到记录,则返回true。
- nextResult()¶
- Return type:
布尔
丢弃当前结果集并导航到下一个(如果可用)。
一些数据库能够为存储过程或SQL批处理(包含多个语句的查询字符串)返回多个结果集。如果在执行查询后有多个结果集可用,此函数可用于导航到下一个结果集。
如果有新的结果集可用,此函数将返回 true。查询将重新定位到新结果集中的无效记录上,并且必须导航到有效记录后才能检索数据值。如果没有新的结果集可用,函数将返回
false
,并且查询将设置为不活动状态。无论如何,旧的结果集将被丢弃。当其中一个语句是非选择语句时,可能会返回受影响的行数而不是结果集。
请注意,某些数据库(例如Microsoft SQL Server)在处理多个结果集时需要不可滚动的游标。某些数据库可能会立即执行所有语句,而其他数据库可能会延迟执行,直到实际访问结果集为止,并且某些数据库可能对SQL批处理中允许使用的语句有限制。
另请参阅
hasFeature()
forwardOnly
next()
isSelect()
numRowsAffected()
isActive()
lastError()
- numRowsAffected()¶
- Return type:
整数
返回受结果SQL语句影响的行数,如果无法确定则返回-1。请注意,对于
SELECT
语句,该值未定义;请改用size()
。如果查询未active
,则返回-1。另请参阅
- numericalPrecisionPolicy()¶
- Return type:
返回数值精度策略。
属性
numericalPrecisionPolicyᅟ
的获取器。- prepare(query)¶
- Parameters:
query – str
- Return type:
布尔
警告
本节包含从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()¶
- Return type:
布尔
检索结果中的前一条记录(如果存在),并将查询定位在检索到的记录上。请注意,结果必须处于
active
状态,并且在调用此函数之前isSelect()
必须返回true,否则它将不执行任何操作并返回false。以下规则适用:
如果结果当前位于第一条记录之前,则不会有任何变化,并返回 false。
如果结果当前位于最后一条记录之后,将尝试检索最后一条记录。
如果结果位于中间位置,将尝试检索前一条记录。
如果无法检索到记录,结果将定位在第一条记录之前并返回false。如果成功检索到记录,则返回true。
- record()¶
- Return type:
警告
本节包含从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()¶
- Return type:
返回与查询相关的结果。
- seek(i[, relative=false])¶
- Parameters:
i – 整数
relative – 布尔值
- Return type:
布尔
检索位于位置
index
的记录(如果可用),并将查询定位在检索到的记录上。第一条记录位于位置0。请注意,在调用此函数之前,查询必须处于active
状态,并且isSelect()
必须返回true。如果
relative
为 false(默认值),则适用以下规则:如果
index
为负数,结果将定位在第一条记录之前,并返回 false。否则,尝试移动到位置
index
的记录。如果无法检索到位置index
的记录,结果将定位在最后一条记录之后,并返回false。如果成功检索到记录,则返回true。
如果
relative
为 true,则适用以下规则:如果结果当前位于第一条记录之前,并且:
index
为负数或零,则没有变化,并返回 false。index
为正数,则尝试将结果定位到绝对位置index
- 1,遵循上述非相对查找的相同规则。
如果结果当前定位在最后一条记录之后并且:
index
为正数或零,则没有变化,并返回 false。index
为负数,则尝试将结果定位在从最后一条记录开始的index
+ 1 相对位置,遵循以下规则。
如果结果当前位于中间的某个位置,并且相对偏移量
index
将结果移动到零以下,则结果将定位在第一条记录之前并返回 false。否则,尝试移动到当前记录前面的
index
条记录(如果index
为负数,则移动到当前记录后面的index
条记录)。如果无法检索到偏移量为index
的记录,则结果将定位在最后一条记录之后(如果index
>= 0),或第一条记录之前(如果index
为负数),并返回false。如果成功检索到记录,则返回true。
- setForwardOnly(forward)¶
- Parameters:
forward – 布尔值
将
forwardOnly
设置为forward
。另请参阅
isForwardOnly()
forwardOnly
next()
seek()
属性
forwardOnlyᅟ
的设置器。- setNumericalPrecisionPolicy(precisionPolicy)¶
- Parameters:
precisionPolicy –
NumericalPrecisionPolicy
将
numericalPrecisionPolicy
设置为precisionPolicy
。属性
numericalPrecisionPolicyᅟ
的设置器。- setPositionalBindingEnabled(enable)¶
- Parameters:
enable – 布尔值
将
positionalBindingEnabled
设置为enable
。另请参阅
isPositionalBindingEnabled()
positionalBindingEnabled
属性
positionalBindingEnabledᅟ
的设置器。- size()¶
- Return type:
整数
返回结果的大小(返回的行数),如果无法确定大小或数据库不支持报告查询大小信息,则返回-1。请注意,对于非
SELECT
语句(isSelect()
返回false
),size()将返回-1。如果查询未激活(isActive()
返回false
),则返回-1。要确定受非
SELECT
语句影响的行数,请使用numRowsAffected()
。将
other
交换到此对象。此操作非常快速且永远不会失败。- value(name)¶
- Parameters:
name – str
- Return type:
对象
这是一个重载函数。
返回当前记录中名为
name
的字段的值。如果字段name
不存在,则返回无效的变体。此重载的效率低于
value()
注意
在Qt 6.8之前的版本中,此函数接受的是QString,而不是QAnyStringView。
- value(i)
- Parameters:
i – 整数
- Return type:
对象
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
返回当前记录中字段
index
的值。字段从左到右编号,使用
SELECT
语句的文本,例如在forename, = SELECT()
字段0是
forename
,字段1是surname
。不建议使用SELECT *
,因为查询中字段的顺序是未定义的。如果字段
index
不存在,查询未激活,或者查询位于无效记录上,则返回无效的QVariant。