- class QSqlField#
QSqlField
类操作 SQL 数据库表和视图中的字段。更多…概述#
方法#
def
__init__()
def
clear()
def
defaultValue()
def
isAutoValue()
def
isGenerated()
def
isNull()
def
isReadOnly()
def
isValid()
定义
length()
定义
metaType()
定义
name()
定义
__ne__()
定义
__eq__()
定义
precision()
定义
setLength()
定义
setName()
定义
setSqlType()
定义
setValue()
定义
swap()
定义
tableName()
定义
typeID()
定义
value()
注意
本文档可能包含自动从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。另请参阅
- 类 RequiredStatus#
指定字段是否为必需或可选。
常量
描述
QSqlField.Required
插入记录时必须指定字段。
QSqlField.Optional
插入记录时不必指定字段。
QSqlField.Unknown
数据库驱动程序无法确定字段是必需的还是可选的。
另请参阅
- __init__([fieldName=""[, type=QMetaType()[, tableName=""]]])#
- 参数:
fieldName – str
type –
QMetaType
tableName – str
这是一个重载函数。
在
table
中创建一个类型为type
的空字段fieldName
。- __init__(other)
- 参数:
other –
QSqlField
创建一个
other
的副本。- clear()#
清除字段的值并将其设置为 NULL。如果字段为只读,则不会发生任何操作。
- defaultValue()#
- 返回类型:
object
返回字段的默认值(可能为 NULL)。
- isAutoValue()#
- 返回类型:
bool
如果值是由数据库自动生成的,例如自增主键值,则返回
true
。注意
在使用 ODBC 驱动程序时,由于 ODBC API 的限制,
isAutoValue()
字段仅在通过执行SELECT
查询获得的QSqlField
对象中填充。如果从QSqlRecord
返回的对象(由record()
或primaryIndex()
返回)中获取,则此字段为false
。另请参阅
- isGenerated()#
- 返回类型:
bool
如果字段是生成的,则返回
true
;否则返回 false。- isNull()#
- 返回类型:
bool
如果字段的值是 NULL,则返回
true
;否则返回 false。另请参阅
- isReadOnly()#
- 返回类型:
bool
如果字段的值是只读的,则返回
true
;否则返回 false。- isValid()#
- 返回类型:
bool
如果字段的变体类型是有效的,则返回
true
;否则返回false
。- length()#
- 返回类型:
int
返回字段的长度。
如果返回的值是负数,则表示从数据库中无法获取信息。
返回字段在数据库中存储的类型。请注意,实际的值可能有不同的类型。数值太大,无法存储在长整型或双精度浮点型中时,通常存储为字符串以防止精度损失。
另请参阅
- name()#
- 返回类型:
str
返回字段的名称。
另请参阅
如果该字段与
other
不相等,则返回true
;否则返回 false。如果该字段与
other
相等,则返回true
;否则返回 false。- precision()#
- 返回类型:
int
返回字段的精度;这对于数值类型才有意义。
如果返回的值是负数,则表示从数据库中无法获取信息。
- requiredStatus()#
- 返回类型:
如果这是一个必填字段,则返回
true
;否则返回false
。如果在插入操作中必填字段没有值,则插入操作将失败。- setAutoValue(autoVal)#
- 参数:
autoVal – bool
如果
autoVal
为 true,则将该字段标记为自动生成的值。另请参阅
- setDefaultValue(value)#
- 参数:
value – 对象
将此字段的默认值设置为
value
。- setGenerated(gen)#
- 参数:
gen – bool
设置生成状态。如果
gen
为 false,则不会为该字段生成 SQL;否则,Qt 类(如QSqlQueryModel
和QSqlTableModel
)将为该字段生成 SQL。- setLength(fieldLength)#
- 参数:
fieldLength – int
将字段的长度设置为
fieldLength
。对于字符串,这是字符串可以容纳的最大字符数;对于其他类型,意义不同。将该字段的变体类型设置为
type
。- setName(name)#
- 参数:
name – str
将字段名称设置为
name
。另请参阅
- setPrecision(precision)#
- 参数:
precision – int
设置字段的
precision
。这仅影响数值字段。- setReadOnly(readOnly)#
- 参数:
readOnly – 布尔类型
设置字段的值只读标志为
readOnly
。只读字段无法使用setValue()
修改其值,也不能使用clear()
清除其值为 NULL。另请参阅
- setRequired(required)#
- 参数:
required – 布尔类型
如果
required
为真,则将此字段的必需状态设置为Required
;否则将其设置为Optional
。- setRequiredStatus(status)#
- 参数:
status –
RequiredStatus
将此字段的必需状态设置为
required
。- setSqlType(type)#
- 参数:
类型 – int
- setTableName(tableName)#
- 参数:
tableName – str
将字段的
tableName
设置为table
。另请参阅
- setValue(value)#
- 参数:
value – 对象
将字段的值设置为
value
。如果字段是只读的(isReadOnly()
返回true
),则不执行任何操作。如果
value
的数据类型与字段当前的数据类型不同,则尝试将其转换为正确类型。在赋值的情况下,这保留字段的原始数据类型,例如将 QString 转换为整数数据类型。要设置值为 NULL,请使用
clear()
。与
other
交换此字段。此函数非常快速且从不失败。- tableName()#
- 返回类型:
str
返回字段的 tableName。
注意
使用 QPSQL 驱动程序时,由于 libpq 库的限制,在由
QSqlRecord
通过获取record()
的单向查询结果生成的QSqlField
中不会填充tableName()
字段。另请参阅
- typeID()#
- 返回类型:
int
- value()#
- 返回类型:
object
作为 QVariant 返回字段值。
使用
isNull()
检查字段值是否为 NULL。另请参阅