PySide6.QtSql.QSqlDriver

class QSqlDriver

QSqlDriver 类是一个用于访问特定 SQL 数据库的抽象基类。更多

PySide6.QtSql.QSqlDriver 的继承图

概要

属性

方法

虚拟方法

信号

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

这个类不应该直接使用。请改用QSqlDatabase

如果你想创建自己的SQL驱动程序,你可以继承这个类并重新实现它的纯虚函数以及你需要的那些虚函数。更多信息请参见如何编写你自己的数据库驱动程序

另请参阅

QSqlDatabase QSqlResult

class DriverFeature

此枚举包含驱动程序可能支持的功能列表。使用hasFeature()来查询是否支持某个功能。某些功能依赖于数据库服务器,因此只有在使用open()成功打开数据库连接后才能正确确定。

常量

描述

QSqlDriver.Transactions

驱动程序是否支持SQL事务。

QSqlDriver.QuerySize

数据库是否能够报告查询的大小。请注意,某些数据库不支持返回查询的大小(即返回的行数),在这种情况下,size() 将返回 -1。

QSqlDriver.BLOB

驱动程序是否支持二进制大对象字段。

QSqlDriver.Unicode

如果数据库服务器支持Unicode字符串,驱动程序是否支持Unicode字符串。

QSqlDriver.PreparedQueries

驱动程序是否支持预查询执行。

QSqlDriver.NamedPlaceholders

驱动程序是否支持使用命名占位符。

QSqlDriver.PositionalPlaceholders

驱动程序是否支持使用位置占位符。

QSqlDriver.LastInsertId

驱动程序是否支持返回最后操作行的ID。

QSqlDriver.BatchOperations

驱动程序是否支持批处理操作,参见 execBatch()

QSqlDriver.SimpleLocking

驱动程序是否禁止在表上设置写锁,而其他查询在该表上设置了读锁。

QSqlDriver.LowPrecisionNumbers

驱动程序是否允许以低精度获取数值。

QSqlDriver.EventNotifications

驱动程序是否支持数据库事件通知。

QSqlDriver.FinishQuery

当调用finish()时,驱动程序是否可以进行任何低级资源清理。

QSqlDriver.MultipleResultSets

驱动程序是否可以访问从批处理语句或存储过程返回的多个结果集。

QSqlDriver.CancelQuery

驱动程序是否允许取消正在运行的查询。

有关支持功能的更多信息可以在Qt SQL driver文档中找到。

另请参阅

hasFeature()

class StatementType

此枚举包含驱动程序可以创建的SQL语句(或子句)类型的列表。

常量

描述

QSqlDriver.WhereStatement

一个SQL WHERE 语句(例如,WHERE f = 5)。

QSqlDriver.SelectStatement

一个SQL SELECT 语句(例如,SELECT f FROM t)。

QSqlDriver.UpdateStatement

一个SQL UPDATE 语句(例如,UPDATE TABLE t set f = 1)。

QSqlDriver.InsertStatement

一个SQL INSERT 语句(例如,INSERT INTO t (f) values (1))。

QSqlDriver.DeleteStatement

一个SQL DELETE 语句(例如,DELETE FROM t)。

另请参阅

sqlStatement()

class IdentifierType

此枚举包含SQL标识符类型的列表。

常量

描述

QSqlDriver.FieldName

一个SQL字段名称

QSqlDriver.TableName

一个SQL表名

class NotificationSource

此枚举包含SQL通知源的列表。

常量

描述

QSqlDriver.UnknownSource

通知来源未知

QSqlDriver.SelfSource

通知源是此连接

QSqlDriver.OtherSource

通知源是另一个连接

class DbmsType

注意

当使用from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。

property numericalPrecisionPolicyᅟ: QSql.NumericalPrecisionPolicy

此属性保存数据库连接的精度策略。

注意

设置精度策略不会影响任何当前活动的查询。

Access functions:
__init__([parent=None])
Parameters:

父对象QObject

使用给定的parent构造一个新的驱动程序。

beginTransaction()
Return type:

布尔

此函数用于开始一个事务。如果成功,返回 true,否则返回 false。默认实现不执行任何操作并返回 false

cancelQuery()
Return type:

布尔

abstract close()

派生类必须重新实现这个纯虚函数以关闭数据库连接。成功时返回true,失败时返回false。

另请参阅

open() setOpen()

commitTransaction()
Return type:

布尔

此函数用于提交事务。如果成功,返回true,否则返回false。默认实现不执行任何操作并返回false

abstract createResult()
Return type:

QSqlResult

在数据库上创建一个空的SQL结果。派生类必须重新实现此函数,并向调用者返回一个适合其数据库的QSqlResult对象。

dbmsType()
Return type:

DbmsType

escapeIdentifier(identifier, type)
Parameters:
Return type:

字符串

返回根据数据库规则转义的identifieridentifier可以是表名或字段名,取决于type

默认实现不执行任何操作。

另请参阅

isIdentifierEscaped()

formatValue(field[, trimStrings=false])
Parameters:
Return type:

字符串

返回数据库中field值的字符串表示。例如,在构建INSERT和UPDATE语句时使用此方法。

默认实现根据以下规则将值格式化为字符串返回:

  • 如果 field 是字符数据,返回值会用单引号括起来,这对于许多 SQL 数据库是合适的。任何嵌入的单引号字符都会被转义(替换为两个单引号字符)。如果 trimStrings 为 true(默认为 false),则会从字段中删除所有尾随空格。

  • 如果 field 是日期/时间数据,则该值将以 ISO 格式格式化并括在单引号中。如果日期/时间数据无效,则返回“NULL”。

  • 如果 field 是 bytearray 数据,并且驱动程序可以编辑二进制字段,则该值将格式化为十六进制字符串。

  • 对于任何其他字段类型,都会在其值上调用toString(),并返回其结果。

另请参阅

toString()

abstract hasFeature(f)
Parameters:

fDriverFeature

Return type:

布尔

如果驱动程序支持功能 feature,则返回 true;否则返回 false

请注意,某些数据库需要先open()才能确定这一点。

另请参阅

DriverFeature

isIdentifierEscaped(identifier, type)
Parameters:
Return type:

布尔

返回identifier是否根据数据库规则进行了转义。identifier可以是表名或字段名,具体取决于type

如果你想在你的QSqlDriver子类中提供自己的实现,请重新实现这个函数。

isOpen()
Return type:

布尔

如果数据库连接是打开的,则返回true;否则返回false。

isOpenError()
Return type:

布尔

如果打开数据库连接时出现错误,则返回 true;否则返回 false

lastError()
Return type:

QSqlError

返回一个QSqlError对象,该对象包含有关数据库上发生的最后一个错误的信息。

另请参阅

setLastError()

maximumIdentifierLength(type)
Parameters:

类型IdentifierType

Return type:

整数

根据数据库设置返回标识符type的最大长度。如果数据库没有最大长度限制,则默认返回INT_MAX。

notification(name, source, payload)
Parameters:

当数据库发布驱动程序订阅的事件通知时,会发出此信号。name 标识事件通知,source 表示信号源,payload 包含可选地随通知一起传递的额外数据。

numericalPrecisionPolicy()
Return type:

NumericalPrecisionPolicy

返回数值精度策略。

属性 numericalPrecisionPolicyᅟ 的获取器。

abstract open(db[, user=""[, password=""[, host=""[, port=-1[, connOpts=""]]]]])
Parameters:
  • db – str

  • user – str

  • password – str

  • host – str

  • port – int

  • connOpts – str

Return type:

布尔

派生类必须重新实现这个纯虚函数,以在数据库 db 上打开一个数据库连接,使用用户名 user,密码 password,主机 host,端口 port 和连接选项 options

函数在成功时必须返回true,在失败时返回false。

另请参阅

setOpen()

primaryIndex(tableName)
Parameters:

tableName – str

Return type:

QSqlIndex

返回表 tableName 的主索引。如果表没有主索引,则返回一个空的 QSqlIndex。默认实现返回一个空索引。

record(tableName)
Parameters:

tableName – str

Return type:

QSqlRecord

返回一个QSqlRecord,其中填充了表tableName中的字段名称。如果不存在这样的表,则返回一个空记录。默认实现返回一个空记录。

rollbackTransaction()
Return type:

布尔

此函数用于回滚事务。如果成功,返回true,否则返回false。默认实现不执行任何操作并返回false

setLastError(e)
Parameters:

eQSqlError

此函数用于设置数据库上发生的最后一个错误的值,error

另请参阅

lastError()

setNumericalPrecisionPolicy(precisionPolicy)
Parameters:

precisionPolicyNumericalPrecisionPolicy

numericalPrecisionPolicy设置为precisionPolicy

属性 numericalPrecisionPolicyᅟ 的设置器。

setOpen(o)
Parameters:

o – 布尔值

此函数将数据库的打开状态设置为open。派生类可以使用此函数来报告open()的状态。

另请参阅

open() setOpenError()

setOpenError(e)
Parameters:

e – 布尔值

此函数将数据库的打开错误状态设置为error。派生类可以使用此函数来报告open()的状态。请注意,如果error为true,则数据库的打开状态将设置为关闭(即,isOpen()返回false)。

sqlStatement(type, tableName, rec, preparedStatement)
Parameters:
Return type:

字符串

返回一个类型为type的SQL语句,用于表tableName,并使用rec中的值。如果preparedStatement为true,字符串将包含占位符而不是值。

rec的每个字段中生成的标志决定了该字段是否包含在生成的语句中。

此方法可用于操作表,而无需担心依赖于数据库的SQL方言。对于非预编译语句,值将被正确转义。

在WHERE语句中,rec的每个非空字段都指定了一个等于字段值的过滤条件,或者如果已准备,则是一个占位符。然而,无论是否已准备,空字段都指定了IS NULL条件,并且从不引入占位符。应用程序在执行期间不得尝试为空字段绑定数据。如果需要占位符,则必须将字段设置为某个非空值。此外,由于非空字段指定了相等条件,而SQL NULL不等于任何东西,甚至不等于它自己,因此通常将NULL绑定到占位符是没有用的。

stripDelimiters(identifier, type)
Parameters:
Return type:

字符串

返回去除前后分隔符的identifieridentifier可以是表名或字段名,取决于type。如果identifier没有前后分隔符,则identifier将原样返回。

如果你想在你的QSqlDriver子类中提供自己的实现,请重新实现这个函数。

另请参阅

isIdentifierEscaped()

subscribeToNotification(name)
Parameters:

name – str

Return type:

布尔

此函数用于订阅来自数据库的事件通知。name 标识事件通知。

如果成功,返回 true,否则返回 false。

调用此函数时,数据库必须处于打开状态。当通过调用close()关闭数据库时,所有订阅的事件通知将自动取消订阅。请注意,在已经打开的数据库上调用open()可能会隐式导致close()被调用,这将导致驱动程序取消所有事件通知的订阅。

当数据库发布由name标识的事件通知时,会发出notification()信号。

如果你想在你自己的QSqlDriver子类中提供事件通知支持,请重新实现此函数。

subscribedToNotifications()
Return type:

字符串列表

返回当前订阅的事件通知的名称列表。

如果你想在你自己的QSqlDriver子类中提供事件通知支持,请重新实现这个函数。

tables(tableType)
Parameters:

tableTypeTableType

Return type:

字符串列表

返回数据库中表的名称列表。默认实现返回一个空列表。

tableType 参数描述了应返回哪些类型的表。由于二进制兼容性,该字符串包含枚举 QSql::TableTypes 的文本值。为了向后兼容,空字符串应被视为 Tables

unsubscribeFromNotification(name)
Parameters:

name – str

Return type:

布尔

此函数用于取消订阅数据库的事件通知。name 标识事件通知。

如果成功,返回 true,否则返回 false。

调用此函数时,数据库必须处于打开状态。当调用close()函数时,所有订阅的事件通知将自动取消订阅。

调用函数后,当数据库发布由name标识的事件通知时,notification()信号将不再被发出。

如果你想在你自己的QSqlDriver子类中提供事件通知支持,请重新实现这个函数。