PySide6.QtSql.QSqlResult¶
- class QSqlResult¶
QSqlResult类提供了一个抽象接口,用于从特定的 SQL 数据库中访问数据。更多…概要¶
方法¶
def
__init__()def
addBindValue()def
at()def
bindValueType()def
bindingSyntax()def
boundValue()def
boundValueName()def
boundValues()def
clear()def
driver()def
exec_()def
executedQuery()def
hasOutValues()def
isActive()def
isForwardOnly()def
isSelect()def
isValid()def
lastError()def
lastQuery()def
resetBindCount()
虚拟方法¶
def
bindValue()def
data()def
exec()def
execBatch()def
fetch()def
fetchFirst()def
fetchLast()def
fetchNext()def
fetchPrevious()def
handle()def
isNull()def
lastInsertId()def
nextResult()def
prepare()def
record()def
reset()def
savePrepare()def
setActive()def
setAt()def
setForwardOnly()def
setLastError()def
setQuery()def
setSelect()def
size()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
通常,你会使用
QSqlQuery而不是QSqlResult,因为QSqlQuery为QSqlResult的数据库特定实现提供了一个通用包装器。如果你正在实现自己的SQL驱动程序(通过子类化
QSqlDriver),你将需要提供自己的QSqlResult子类,该类需要实现所有纯虚函数以及你所需的其他虚函数。另请参阅
- class BindingSyntax¶
此枚举类型指定了在预准备查询中指定占位符的不同语法。
常量
描述
QSqlResult.PositionalBinding
使用ODBC风格的位置语法,用“?”作为占位符。
QSqlResult.NamedBinding
使用带有命名占位符的Oracle风格语法(例如,“:id”)
另请参阅
- class VirtualHookOperation¶
- __init__(db)¶
- Parameters:
db –
QSqlDriver
使用数据库驱动程序
db创建一个QSqlResult。该对象初始化为非活动状态。另请参阅
- addBindValue(val, type)¶
- Parameters:
val – 对象
type –
ParamTypeFlag的组合
将参数类型
paramType的值val绑定到当前记录(行)中的下一个可用位置。另请参阅
- at()¶
- Return type:
整数
返回结果的当前(从零开始的)行位置。可能返回特殊值
BeforeFirstRow或AfterLastRow。- bindValue(placeholder, val, type)¶
- Parameters:
placeholder – str
val – 对象
type –
ParamTypeFlag的组合
这是一个重载函数。
将参数类型
paramType的值val绑定到当前记录(行)中的placeholder名称。- bindValue(pos, val, type)
- Parameters:
pos – 整数
val – 对象
type –
ParamTypeFlag的组合
将参数类型
paramType的值val绑定到当前记录(行)中的位置index。另请参阅
- bindValueType(placeholder)¶
- Parameters:
placeholder – str
- Return type:
ParamTypeFlag的组合
这是一个重载函数。
返回与给定
placeholder名称绑定的值的参数类型。- bindValueType(pos)
- Parameters:
pos – 整数
- Return type:
返回绑定在位置
index的值的参数类型。另请参阅
- bindingSyntax()¶
- Return type:
返回由预准备查询使用的绑定语法。
- boundValue(placeholder)¶
- Parameters:
placeholder – str
- Return type:
对象
这是一个重载函数。
返回当前记录(行)中由给定
placeholder名称绑定的值。另请参阅
- boundValue(pos)
- Parameters:
pos – 整数
- Return type:
对象
返回当前记录(行)中绑定在位置
index的值。另请参阅
- boundValueCount()¶
- Return type:
整数
返回结果中绑定值的数量。
另请参阅
- boundValueName(pos)¶
- Parameters:
pos – 整数
- Return type:
字符串
返回当前记录(行)中位置
index处的绑定值的名称。- boundValueNames()¶
- Return type:
字符串列表
返回所有绑定值的名称。
- boundValues()¶
- Return type:
.QVariant 列表
返回当前记录(行)的结果绑定值列表。
另请参阅
- clear()¶
清除整个结果集并释放任何相关的资源。
- abstract data(i)¶
- Parameters:
i – 整数
- Return type:
对象
返回当前行中字段
index的数据作为QVariant。只有在结果处于活动状态且位于有效记录上且index为非负数时才会调用此函数。派生类必须重新实现此函数并返回字段index的值,如果无法确定则返回QVariant()。- detachFromResultSet()¶
- driver()¶
- Return type:
返回与结果关联的驱动程序。这是传递给构造函数的对象。
- exec()¶
- Return type:
布尔
执行查询,如果成功则返回true;否则返回false。
另请参阅
- execBatch([arrayBind=false])¶
- Parameters:
arrayBind – 布尔值
- Return type:
布尔
- exec_()¶
- Return type:
布尔
- executedQuery()¶
- Return type:
字符串
返回实际执行的查询。这可能与传递的查询不同,例如,如果绑定值与预准备查询一起使用,而底层数据库不支持预准备查询。
另请参阅
- abstract fetch(i)¶
- Parameters:
i – 整数
- Return type:
布尔
将结果定位到任意(从零开始的)行
index。此函数仅在结果处于活动状态时调用。派生类必须重新实现此函数并将结果定位到行
index,并使用适当的值调用setAt()。返回true表示成功,或返回false表示失败。- abstract fetchFirst()¶
- Return type:
布尔
将结果定位到结果中的第一条记录(第0行)。
只有在结果处于活动状态时才会调用此函数。派生类必须重新实现此函数并将结果定位到第一条记录,并使用适当的值调用
setAt()。返回true表示成功,返回false表示失败。另请参阅
- abstract fetchLast()¶
- Return type:
布尔
将结果定位到结果中的最后一条记录(最后一行)。
只有在结果处于活动状态时才会调用此函数。派生类必须重新实现此函数并将结果定位到最后一条记录,并使用适当的值调用
setAt()。返回true表示成功,返回false表示失败。另请参阅
- fetchNext()¶
- Return type:
布尔
将结果定位到结果中的下一个可用记录(行)。
只有在结果处于活动状态时才会调用此函数。默认实现使用下一个索引调用
fetch()。派生类可以重新实现此函数,并以其他方式将结果定位到下一条记录,并使用适当的值调用setAt()。返回true表示成功,返回false表示失败。另请参阅
- fetchPrevious()¶
- Return type:
布尔
将结果定位到结果中的前一条记录(行)。
此函数仅在结果处于活动状态时调用。默认实现使用前一个索引调用
fetch()。派生类可以重新实现此函数,并以其他方式将结果定位到下一条记录,并使用适当的值调用setAt()。返回true表示成功,返回false表示失败。- handle()¶
- Return type:
对象
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
返回此结果集的低级数据库句柄,该句柄包装在QVariant中,如果没有句柄,则返回无效的QVariant。
警告
请极其谨慎地使用此功能,并且仅在您知道自己在做什么的情况下使用。
警告
如果结果被修改(例如,如果你清除它),这里返回的句柄可能会变成一个过时的指针。
警告
如果结果尚未执行,句柄可以为NULL。
警告
PostgreSQL: 在仅向前模式下,
QSqlResult的句柄在调用fetch()、fetchFirst()、fetchLast()、fetchNext()、fetchPrevious()、nextResult() 后可能会发生变化。此处返回的句柄依赖于数据库,在访问变体之前,您应该查询其类型名称。
此示例检索sqlite结果的句柄:
db = QSqlDatabase.database("sales") query = QSqlQuery("SELECT NAME, DOB FROM EMPLOYEES", db) v = query.result().handle() if v.isValid() and qstrcmp(v.typeName(), "sqlite3_stmt*") == 0: # v.data() returns a pointer to the handle sqlite3_stmt handle = sqlite3_stmt(v.data()) if handle: # ...
此代码片段返回 PostgreSQL 或 MySQL 的句柄:
if qstrcmp(v.typeName(), "PGresult*") == 0: handle = PGresult(v.data()) if handle: # ... if qstrcmp(v.typeName(), "MYSQL_STMT*") == 0: MYSQL_STMT handle = MYSQL_STMT(v.data()) if handle: # ...
另请参阅
handle()- hasOutValues()¶
- Return type:
布尔
如果查询的绑定值中至少有一个是
QSql::Out或InOut,则返回true;否则返回false。另请参阅
- isActive()¶
- Return type:
布尔
如果结果有记录可以检索,则返回
true;否则返回false。- isForwardOnly()¶
- Return type:
布尔
如果只能向前滚动结果集,则返回
true;否则返回false。另请参阅
- abstract isNull(i)¶
- Parameters:
i – 整数
- Return type:
布尔
如果当前行中位置为
index的字段为空,则返回true;否则返回false。- isPositionalBindingEnabled()¶
- Return type:
布尔
- isSelect()¶
- Return type:
布尔
如果当前结果来自
SELECT语句,则返回true;否则返回false。另请参阅
- isValid()¶
- Return type:
布尔
如果结果定位在有效记录上(即结果没有定位在第一条记录之前或最后一条记录之后),则返回
true;否则返回false。另请参阅
返回与结果相关的最后一个错误。
另请参阅
- lastInsertId()¶
- Return type:
对象
如果数据库支持,返回最近插入行的对象ID。如果查询未插入任何值或数据库未返回ID,则将返回无效的QVariant。如果插入操作涉及多行,则行为未定义。
请注意,对于Oracle数据库,将返回行的ROWID,而对于MySQL数据库,将返回行的自动递增字段。
另请参阅
- lastQuery()¶
- Return type:
字符串
返回当前的SQL查询文本,如果没有则返回空字符串。
另请参阅
- nextResult()¶
- Return type:
布尔
- abstract numRowsAffected()¶
- Return type:
整数
返回受最后执行的查询影响的行数,如果无法确定或查询是
SELECT语句,则返回-1。另请参阅
- numericalPrecisionPolicy()¶
- Return type:
- prepare(query)¶
- Parameters:
query – str
- Return type:
布尔
准备执行给定的
query;查询通常会使用占位符,以便可以重复执行。如果查询准备成功,则返回true;否则返回false。另请参阅
- record()¶
- Return type:
如果查询处于活动状态,则返回当前记录;否则返回一个空的
QSqlRecord。默认实现总是返回一个空的
QSqlRecord。另请参阅
- abstract reset(sqlquery)¶
- Parameters:
sqlquery – str
- Return type:
布尔
设置结果以使用SQL语句
query进行后续数据检索。派生类必须重新实现此函数并将
query应用于数据库。此函数仅在结果设置为非活动状态并定位在新结果的第一个记录之前时调用。如果查询成功并准备就绪,派生类应返回true,否则返回false。另请参阅
- resetBindCount()¶
重置绑定参数的数量。
- savePrepare(sqlquery)¶
- Parameters:
sqlquery – str
- Return type:
布尔
准备给定的
query,尽可能使用底层数据库功能。如果查询准备成功,则返回true;否则返回false。注意:此方法应被称为“safePrepare()”。
另请参阅
- setActive(a)¶
- Parameters:
a – 布尔值
此函数用于派生类将内部活动状态设置为
active。另请参阅
- setAt(at)¶
- Parameters:
at – int
此函数用于派生类将内部(从零开始的)行位置设置为
index。另请参阅
- setForwardOnly(forward)¶
- Parameters:
forward – 布尔值
设置仅向前模式为
forward。如果forward为真,则仅允许使用fetchNext()来导航结果。仅向前模式需要的内存要少得多,因为结果不需要缓存。默认情况下,此功能是禁用的。将forward only设置为false是对数据库引擎的建议,数据库引擎最终决定结果集是仅向前还是可滚动的。
isForwardOnly()将始终返回结果集的正确状态。注意
在执行查询后调用setForwardOnly将导致最佳情况下出现意外结果,最坏情况下导致崩溃。
注意
为了确保仅向前查询成功完成,应用程序不仅应在执行查询后检查
lastError()是否有错误,还应在导航查询结果后进行检查。警告
PostgreSQL: 在仅向前模式下导航查询结果时,不要在同一数据库连接上执行任何其他SQL命令。这将导致查询结果丢失。
此函数提供给派生类,用于将最后一个错误设置为
error。另请参阅
- setNumericalPrecisionPolicy(policy)¶
- Parameters:
- setPositionalBindingEnabled(enable)¶
- Parameters:
enable – 布尔值
- setQuery(query)¶
- Parameters:
query – str
设置当前查询结果为
query。您必须调用reset()以在数据库上执行查询。另请参阅
- setSelect(s)¶
- Parameters:
s – 布尔值
此函数为派生类提供,用于指示当前语句是否为SQL
SELECT语句。如果语句是SELECT语句,则select参数应为true;否则应为false。另请参阅
- abstract size()¶
- Return type:
整数
返回
SELECT结果的大小,如果无法确定或查询不是SELECT语句,则返回-1。另请参阅