- 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 –
NotificationSource
payload – 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 –
StatementType
tableName – str
rec –
QSqlRecord
preparedStatement – 布尔值
- 返回类型:
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
子类中提供事件通知支持,则重写此函数。