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(数据定义语言)语句,如CREATETABLE。它还可以用于执行非标准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的行为将是未定义的。另请参阅
QSqlDatabaseQSqlQueryModelQSqlTableModelQVariant- 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对象,该对象使用QSqlResultresult与数据库进行通信。- __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()forwardOnlynext()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()forwardOnlynext()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。