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