class QSqlField#

QSqlField 类操作 SQL 数据库表和视图中的字段。更多

概述#

方法#

注意

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

详细描述#

警告

本节包含自动从C++翻译成Python的片段,可能包含错误。

QSqlField 表示数据库表或视图的单个字段的特征,例如数据类型和列名。字段还包含数据库列的值,可以查看或更改。

字段数据值存储为QVariants。不允许使用不兼容的类型。例如

field = QSqlField("age", QMetaType.fromType())
    field.setValue(QPixmap()) # WRONG

但是,字段将尝试在可能的情况下将某些数据类型转换为字段数据类型

field = QSqlField("age", QMetaType.fromType())
    field.setValue(QString("123")) # casts QString to int

QSqlField 对象很少在应用程序代码中显式创建。它们通常通过包含字段列表的QSqlRecord 间接访问。例如

query = QSqlQuery()            ...

record = query.record()
field = record.field("country")

QSqlField 对象可以提供有关字段的某些元数据,例如,其 name() 、variant类型()、 length()precision()defaultValue()、它的 typeID() 以及它的 requiredStatus()isGenerated()isReadOnly() . 检查字段数据,看看它是否 isNull() ,并检索其 value()。当编辑数据时,可以通过 setValue() 来设置值或通过 clear() 将其设置为NULL。

另请参阅

QSqlRecord

RequiredStatus#

指定字段是否为必需或可选。

常量

描述

QSqlField.Required

插入记录时必须指定字段。

QSqlField.Optional

插入记录时不必指定字段。

QSqlField.Unknown

数据库驱动程序无法确定字段是必需的还是可选的。

另请参阅

requiredStatus()

__init__([fieldName=""[, type=QMetaType()[, tableName=""]]])#
参数:
  • fieldName – str

  • typeQMetaType

  • tableName – str

这是一个重载函数。

table 中创建一个类型为 type 的空字段 fieldName

__init__(other)
参数:

otherQSqlField

创建一个 other 的副本。

clear()#

清除字段的值并将其设置为 NULL。如果字段为只读,则不会发生任何操作。

defaultValue()#
返回类型:

object

返回字段的默认值(可能为 NULL)。

isAutoValue()#
返回类型:

bool

如果值是由数据库自动生成的,例如自增主键值,则返回 true

注意

在使用 ODBC 驱动程序时,由于 ODBC API 的限制,isAutoValue() 字段仅在通过执行 SELECT 查询获得的 QSqlField 对象中填充。如果从 QSqlRecord 返回的对象(由 record()primaryIndex() 返回)中获取,则此字段为 false

另请参阅

setAutoValue()

isGenerated()#
返回类型:

bool

如果字段是生成的,则返回 true;否则返回 false。

isNull()#
返回类型:

bool

如果字段的值是 NULL,则返回 true;否则返回 false。

另请参阅

value()

isReadOnly()#
返回类型:

bool

如果字段的值是只读的,则返回 true;否则返回 false。

isValid()#
返回类型:

bool

如果字段的变体类型是有效的,则返回 true;否则返回 false

length()#
返回类型:

int

返回字段的长度。

如果返回的值是负数,则表示从数据库中无法获取信息。

metaType()#
返回类型:

QMetaType

返回字段在数据库中存储的类型。请注意,实际的值可能有不同的类型。数值太大,无法存储在长整型或双精度浮点型中时,通常存储为字符串以防止精度损失。

另请参阅

setMetaType()

name()#
返回类型:

str

返回字段的名称。

另请参阅

setName()

__ne__(other)#
参数:

otherQSqlField

返回类型:

bool

如果该字段与 other 不相等,则返回 true;否则返回 false。

__eq__(other)#
参数:

otherQSqlField

返回类型:

bool

如果该字段与 other 相等,则返回 true;否则返回 false。

precision()#
返回类型:

int

返回字段的精度;这对于数值类型才有意义。

如果返回的值是负数,则表示从数据库中无法获取信息。

requiredStatus()#
返回类型:

RequiredStatus

如果这是一个必填字段,则返回 true;否则返回 false。如果在插入操作中必填字段没有值,则插入操作将失败。

setAutoValue(autoVal)#
参数:

autoVal – bool

如果 autoVal 为 true,则将该字段标记为自动生成的值。

另请参阅

isAutoValue()

setDefaultValue(value)#
参数:

value – 对象

将此字段的默认值设置为 value

setGenerated(gen)#
参数:

gen – bool

设置生成状态。如果 gen 为 false,则不会为该字段生成 SQL;否则,Qt 类(如 QSqlQueryModelQSqlTableModel)将为该字段生成 SQL。

setLength(fieldLength)#
参数:

fieldLength – int

将字段的长度设置为 fieldLength。对于字符串,这是字符串可以容纳的最大字符数;对于其他类型,意义不同。

setMetaType(type)#
参数:

typeQMetaType

将该字段的变体类型设置为 type

setName(name)#
参数:

name – str

将字段名称设置为 name

另请参阅

name()

setPrecision(precision)#
参数:

precision – int

设置字段的 precision。这仅影响数值字段。

setReadOnly(readOnly)#
参数:

readOnly – 布尔类型

设置字段的值只读标志为 readOnly。只读字段无法使用 setValue() 修改其值,也不能使用 clear() 清除其值为 NULL。

另请参阅

isReadOnly()

setRequired(required)#
参数:

required – 布尔类型

如果 required 为真,则将此字段的必需状态设置为 Required;否则将其设置为 Optional

setRequiredStatus(status)#
参数:

statusRequiredStatus

将此字段的必需状态设置为 required

setSqlType(type)#
参数:

类型 – int

setTableName(tableName)#
参数:

tableName – str

将字段的 tableName 设置为 table

另请参阅

tableName()

setValue(value)#
参数:

value – 对象

将字段的值设置为 value。如果字段是只读的(isReadOnly() 返回 true),则不执行任何操作。

如果 value 的数据类型与字段当前的数据类型不同,则尝试将其转换为正确类型。在赋值的情况下,这保留字段的原始数据类型,例如将 QString 转换为整数数据类型。

要设置值为 NULL,请使用 clear()

swap(other)#
参数:

otherQSqlField

other 交换此字段。此函数非常快速且从不失败。

tableName()#
返回类型:

str

返回字段的 tableName。

注意

使用 QPSQL 驱动程序时,由于 libpq 库的限制,在由 QSqlRecord 通过获取 record() 的单向查询结果生成的 QSqlField 中不会填充 tableName() 字段。

另请参阅

设置 tableName()

typeID()#
返回类型:

int

value()#
返回类型:

object

作为 QVariant 返回字段值。

使用 isNull() 检查字段值是否为 NULL。

另请参阅

setValue()