class QSqlDriver#

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

Inheritance diagram of PySide6.QtSql.QSqlDriver

概要#

方法#

虚函数#

信号#

注意

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

详细说明#

该类不应直接使用。请使用 QSqlDatabase 代替。

如果您想创建自己的SQL驱动程序,可以继承此类并重写其纯虚函数和所需的虚函数。有关更多信息,请参阅如何编写自己的数据库驱动程序

另请参阅

QSqlDatabase QSqlResult

class DriverFeature#

此枚举包含一个可能支持的特性列表。使用 hasFeature() 查询特性是否受支持。

常量

描述

QSqlDriver.Transactions

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

QSqlDriver.QuerySize

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

QSqlDriver.BLOB

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

QSqlDriver.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 驱动程序 文档。

另请参阅

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#
__init__([parent=None])#
参数:

parentQObject

根据指定的 parent 创建一个新的驱动程序。

beginTransaction()#
返回类型:

bool

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

cancelQuery()#
返回类型:

bool

abstract close()#

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

另请参阅

open() setOpen()

commitTransaction()#
返回类型:

bool

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

abstract createResult()#
返回类型:

QSqlResult

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

dbmsType()#
返回类型:

DbmsType

escapeIdentifier(identifier, type)#
参数:
返回类型:

str

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

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

另请参阅

isIdentifierEscaped()

formatValue(field[, trimStrings=false])#
参数:
返回类型:

str

返回数据库中 field 值的字符串表示形式。这用于构造 INSERT 和 UPDATE 语句为例。

默认实现返回值按照以下规则格式化为字符串:

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

  • 如果 field 是日期/时间数据,则值按照 ISO 格式格式化并用单引号括起来。如果日期/时间数据无效,则返回“NULL”。

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

  • 对于任何其他字段类型,将调用它的值上的 toString() 并返回此结果。

另请参阅

toString()

抽象hasFeature(f)#
参数:

fDriverFeature

返回类型:

bool

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

请注意,一些数据库在确定此操作之前需要先调用 open()

另请参阅

DriverFeature

isIdentifierEscaped(identifier, type)#
参数:
返回类型:

bool

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

如果你想在你的 QSqlDriver 子类中提供自己的实现,则需要重写此函数。

isOpen()#
返回类型:

bool

如果数据库连接已打开则返回 true,否则返回 false

isOpenError()#
返回类型:

bool

如果在打开数据库连接时发生错误,则返回 true,否则返回 false

lastError()#
返回类型:

QSqlError

返回一个 QSqlError 对象,其中包含数据库上发生的最后错误的详细信息。

另请参阅

setLastError()

maximumIdentifierLength(type)#
参数:

typeIdentifierType

返回类型:

int

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

notification(name, source, payload)#
参数:

当数据库发布驱动程序订阅的事件通知时发出此信号。 name 识别事件通知, source 指示信号源, payload 保持与通知一起可选传输的额外数据。

numericalPrecisionPolicy()#
返回类型:

NumericalPrecisionPolicy

返回数据库连接的当前默认精度策略。

摘要 open(db[, user=""[, password=""[, host=""[, port=-1[, connOpts=""]]]]])#
参数:
  • db – str

  • user – str

  • password – str

  • host – str

  • port – int

  • connOpts – str

返回类型:

bool

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

函数必须返回 true 表示成功,返回 false 表示失败。

另请参阅

setOpen()

primaryIndex(tableName)#
参数:

tableName – str

返回类型:

QSqlIndex

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

record(tableName)#
参数:

tableName – str

返回类型:

QSqlRecord

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

rollbackTransaction()#
返回类型:

bool

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

setLastError(e)#
参数:

eQSqlError

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

另请参阅

lastError()

setNumericalPrecisionPolicy(precisionPolicy)
参数:

precisionPolicyNumericalPrecisionPolicy

设置由该驱动程序创建的查询使用的默认数值精度策略为 precisionPolicy

注意:将默认精度策略设置为 precisionPolicy 不会影响任何当前正在进行的查询。

setOpen(o)
参数:

o – 布尔值

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

另请参阅

open() setOpenError()

setOpenError(e)
参数:

e – 布尔值

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

sqlStatement(type, tableName, rec, preparedStatement)#
参数:
返回类型:

str

返回针对表 tableNametype 类型的 SQL 语句,其中包含来自 rec 的值。如果 preparedStatement 为真,字符串将包含占位符而不是值。

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

此方法可以用来操作表,而不必担心数据库相关的 SQL 语法。对于非预处理语句,值将被正确转义。

在 WHERE 语句中,rec 的每个非空字段指定一个与字段值相同的等于条件,如果准备好的,则是一个占位符。但是,无论是准备好还是未准备好,空字段指定为 NULL 条件且从不引入占位符。在执行过程中,应用程序不应尝试为空字段绑定数据。如果想要占位符,字段必须设置为某个非空值。此外,由于非空字段指定等于条件,而 SQL NULL 与任何东西(即使与自身)都不相等,因此通常不必将 NULL 绑定到占位符。

stripDelimiters(identifier, type)#
参数:
返回类型:

str

返回去除前后界的 identifieridentifier 可以是一个数据表名或字段名,取决于 type。如果 identifier 没有前后界的界符字符,则返回没有修改的 identifier

如果你想在你的 QSqlDriver 子类中提供自己的实现,则需要重写此函数。

另请参阅

isIdentifierEscaped()

subscribeToNotification(name)#
参数:

name – str

返回类型:

bool

调用此函数以订阅来自数据库的事件通知。 name 确定事件通知。

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

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

当数据库通过 name 识别的事件通知发布时,将发出 notification() 信号。

如果你想在你的QSqlDriver子类中提供事件通知支持,则重写此函数。

subscribedToNotifications()#
返回类型:

字符串列表

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

如果你想在你的QSqlDriver子类中提供事件通知支持,则重写此函数。

tables(tableType)#
参数:

tableTypeTableType

返回类型:

字符串列表

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

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

unsubscribeFromNotification(name)#
参数:

name – str

返回类型:

bool

调用此函数以取消订阅从数据库的事件通知。name 用来标识事件通知。

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

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

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

如果你想在你的QSqlDriver子类中提供事件通知支持,则重写此函数。