- class QSqlDriver#
QSqlDriver类是用于访问特定 SQL 数据库的抽象基类。 更多…概要#
方法#
def
__init__()def
dbmsType()def
isOpenError()def
lastError()
虚函数#
def
cancelQuery()def
close()def
createResult()def
formatValue()def
hasFeature()def
isOpen()def
open()def
primaryIndex()def
record()def
setLastError()def
setOpen()def
setOpenError()def
sqlStatement()定义
tables()
信号#
注意
本文档可能包含自动从C++翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译存在问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建票据来告诉我们
详细说明#
该类不应直接使用。请使用
QSqlDatabase代替。如果您想创建自己的SQL驱动程序,可以继承此类并重写其纯虚函数和所需的虚函数。有关更多信息,请参阅如何编写自己的数据库驱动程序。
另请参阅
- 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 驱动程序 文档。
另请参阅
- 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)。另请参阅
- class IdentifierType#
此枚举包含 SQL 标识符类型列表。
常量
描述
QSqlDriver.FieldName
SQL 字段名
QSqlDriver.TableName
SQL 表名
- class NotificationSource#
此枚举包含 SQL 通知源的列表。
常量
描述
QSqlDriver.UnknownSource
通知源是未知的
QSqlDriver.SelfSource
通知源是此连接
QSqlDriver.OtherSource
通知源是另一个连接
- class DbmsType#
根据指定的
parent创建一个新的驱动程序。- beginTransaction()#
- 返回类型:
bool
该函数用于开始一个事务。如果成功,返回 true,否则返回 false。默认实现不执行任何操作,并返回
false。- cancelQuery()#
- 返回类型:
bool
- abstract close()#
派生类必须重写此纯虚函数以关闭数据库连接。成功时返回 true,失败时返回 false。
- commitTransaction()#
- 返回类型:
bool
该函数用于提交一个事务。如果成功,返回 true,否则返回 false。默认实现不执行任何操作,并返回
false。- abstract createResult()#
- 返回类型:
在数据库上创建一个空的 SQL 结果。派生类必须重写此函数,并将适合其数据库的
QSqlResult对象返回给调用者。- escapeIdentifier(identifier, type)#
- 参数:
identifier – str
type –
IdentifierType
- 返回类型:
str
根据数据库规则返回被转义的
identifier。identifier可以是表名或字段名,这取决于type。默认实现不执行任何操作。
返回数据库中
field值的字符串表示形式。这用于构造 INSERT 和 UPDATE 语句为例。默认实现返回值按照以下规则格式化为字符串:
如果
field是字符数据,则值以单引号括起来,这对许多 SQL 数据库是合适的。任何嵌入的单引号字符都会被转义(替换为两个单引号字符)。如果trimStrings为 true(默认为 false),将从字段中去除所有尾随空格。如果
field是日期/时间数据,则值按照 ISO 格式格式化并用单引号括起来。如果日期/时间数据无效,则返回“NULL”。如果
field是字节数据,且驱动程序可以编辑二进制字段,则值将格式化为十六进制字符串。对于任何其他字段类型,将调用它的值上的 toString() 并返回此结果。
另请参阅
toString()- 抽象hasFeature(f)#
- 参数:
f –
DriverFeature- 返回类型:
bool
如果驱动程序支持功能
feature,则返回true;否则返回false。请注意,一些数据库在确定此操作之前需要先调用
open()。另请参阅
- isIdentifierEscaped(identifier, type)#
- 参数:
identifier – str
type –
IdentifierType
- 返回类型:
bool
返回
identifier是否根据数据库规则进行了转义。identifier可以是表名或字段名,依赖于type。如果你想在你的
QSqlDriver子类中提供自己的实现,则需要重写此函数。- isOpen()#
- 返回类型:
bool
如果数据库连接已打开则返回
true,否则返回false。- isOpenError()#
- 返回类型:
bool
如果在打开数据库连接时发生错误,则返回
true,否则返回false。返回一个
QSqlError对象,其中包含数据库上发生的最后错误的详细信息。另请参阅
- maximumIdentifierLength(type)#
- 参数:
type –
IdentifierType- 返回类型:
int
根据数据库设置返回标识符
type的最大长度。如果没有最大限制,则默认返回INT_MAX。- notification(name, source, payload)#
- 参数:
name – str
source –
NotificationSourcepayload – object
当数据库发布驱动程序订阅的事件通知时发出此信号。
name识别事件通知,source指示信号源,payload保持与通知一起可选传输的额外数据。- 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 表示失败。
另请参阅
返回表
tableName的主键。如果该表没有主键,则返回一个空QSqlIndex。默认实现返回一个空索引。- record(tableName)#
- 参数:
tableName – str
- 返回类型:
返回一个填充了表
tableName中字段名称的QSqlRecord。如果不存在这样的表,则返回一个空记录。默认实现返回一个空记录。- rollbackTransaction()#
- 返回类型:
bool
此函数用于回滚事务。如果成功,则返回 true,否则返回 false。默认实现不执行任何操作,返回
false。此函数用于设置数据库上发生错误的最后错误值,即
error。另请参阅
-
setNumericalPrecisionPolicy(precisionPolicy)
- 参数:
precisionPolicy –
NumericalPrecisionPolicy
设置由该驱动程序创建的查询使用的默认数值精度策略为 precisionPolicy。
注意:将默认精度策略设置为 precisionPolicy 不会影响任何当前正在进行的查询。
-
setOpen(o)
- 参数:
o – 布尔值
此函数将数据库的打开状态设置为 open。派生类可以使用此函数来报告 open() 的状态。
另请参阅
-
setOpenError(e)
- 参数:
e – 布尔值
此函数将数据库的打开错误状态设置为 error。派生类可以使用此函数来报告 open() 的状态。注意,如果 error 为 true,则数据库的打开状态将被设置为关闭(即,isOpen() 返回 false)。
另请参阅
- sqlStatement(type, tableName, rec, preparedStatement)#
- 参数:
type –
StatementTypetableName – str
rec –
QSqlRecordpreparedStatement – 布尔值
- 返回类型:
str
返回针对表 tableName 的 type 类型的 SQL 语句,其中包含来自 rec 的值。如果 preparedStatement 为真,字符串将包含占位符而不是值。
rec 中每个字段的生成标志决定该字段是否包含在生成的语句中。
此方法可以用来操作表,而不必担心数据库相关的 SQL 语法。对于非预处理语句,值将被正确转义。
在 WHERE 语句中,rec 的每个非空字段指定一个与字段值相同的等于条件,如果准备好的,则是一个占位符。但是,无论是准备好还是未准备好,空字段指定为 NULL 条件且从不引入占位符。在执行过程中,应用程序不应尝试为空字段绑定数据。如果想要占位符,字段必须设置为某个非空值。此外,由于非空字段指定等于条件,而 SQL NULL 与任何东西(即使与自身)都不相等,因此通常不必将 NULL 绑定到占位符。
- stripDelimiters(identifier, type)#
- 参数:
identifier – str
type –
IdentifierType
- 返回类型:
str
返回去除前后界的 identifier,identifier 可以是一个数据表名或字段名,取决于 type。如果 identifier 没有前后界的界符字符,则返回没有修改的 identifier。
如果你想在你的 QSqlDriver 子类中提供自己的实现,则需要重写此函数。
- subscribeToNotification(name)#
- 参数:
name – str
- 返回类型:
bool
调用此函数以订阅来自数据库的事件通知。 name 确定事件通知。
如果成功,返回 true,否则返回 false。
当调用此函数时,数据库必须处于打开状态。当通过调用 close() 关闭数据库时,所有订阅的事件通知将自动取消订阅。请注意,在已打开的数据库上调用 open() 可能隐式调用 close(),这将导致驱动程序取消订阅所有事件通知。
当数据库通过 name 识别的事件通知发布时,将发出 notification() 信号。
如果你想在你的QSqlDriver子类中提供事件通知支持,则重写此函数。
- subscribedToNotifications()#
- 返回类型:
字符串列表
返回当前已订阅的事件通知名称列表。
如果你想在你的QSqlDriver子类中提供事件通知支持,则重写此函数。
返回数据库中表名称的列表。默认实现返回一个空列表。
参数 tableType 描述应返回哪些类型的表。由于二进制兼容性,字符串包含枚举 QSql::TableTypes 的值作为文本。空字符串应该根据向后兼容性处理为 Tables。
- unsubscribeFromNotification(name)#
- 参数:
name – str
- 返回类型:
bool
调用此函数以取消订阅从数据库的事件通知。name 用来标识事件通知。
如果成功,返回 true,否则返回 false。
调用此函数时必须确保数据库已打开。当调用 close() 函数时,所有已订阅的事件通知将自动取消订阅。
调用 此 函数后,当数据库通过 name 标识的事件通知被发布时,将不再发出 notification() 信号。
如果你想在你的QSqlDriver子类中提供事件通知支持,则重写此函数。