Table 构造方法
1 Table(name, metadata[, *column_list][, **kwargs])
参数说明:
- name 表名
-
metadata
元数据对象 -
column_list
是列(Column
或其他继承自SchemaItem
的对象)列表 -
kwargs
主要内容:-
schema
: (None
)表的模式(一般默认是数据库名, 无需特别指定; Oracle中是owner
, 当一个数据库由多个用户管理时,用户的默认数据库不是要连接的数据库时,需要指定此项) -
autoload
: (False
)是否自动加载 -
autoload_replace
: (True
)是否自动用元数据中加载的列替换column_list
中已经存在了的同名列- 为
True
时自动将column_list
中已经存在了的列替换为从元数据中加载的同名列 - 为
False
时会忽略元数据有,且column_list
中已经存在了的列
- 为
-
autoload_with
: 自动加载的引擎(Engine
)或连接(Connection
)对象- 为
None
时-
autoload
为True
时, 会从传递的metadata
中寻找引擎或连接对象
-
- 不为
None
时- 当
autoload
不为True
时,autoload
会自动被修改为True
- 当
- 为
-
comment
: 注释 -
extend_existing
: (False
)当表已经存在于元数据中时,如果元数据中存在与column_list
中的列同名的列,column_list
中同名的列会替换掉元数据中已经有的列 -
keep_existing
: (False
)当表已经存在于元数据中时,如果元数据中存在与column_list
中的列同名的列,column_list
中同名的列会被忽略 -
include_columns
:(None
)从元数据中只需加载的表的列名列表 -
mustexist
: (False
)表名是否一定需要存在于元数据中(不存在时引发异常)
-
常用SchemaItem
子类:
PrimaryKeyConstraint
ForeignKeyConstraint
注意,在使用不同版本的SQLAlchemy时,以上参数中:
- 老版本中可能部分参数还没有
- 新版本中可能废弃了部分参数
-
keep_existing
与extend_existing
互相排斥,不能同时传递为True
-
keep_existing
与extend_existing
适用于新建表对象;如果要创建新的表,表明已经存在于meta.tables
中时,需要指明任意一个参数,不然会报错。 -
useexisting
已被废弃, 新版本使用extend_existing
Column的构造方法
Column([name, ]type_[, **kwargs])
参数说明:
name
字段名type_
字段数据类型,这里的数据类型包括:
- SQLAlchemy中常用数据类型:
- 整数:
SmallInteger
、Integer
、BigInteger
等- 浮点数:
Float
、Numeric
等- 文本字符串:
String
、Text
、Unicode
、UnicodeText
、CHAR
、VARCHAR
等- 二进制字符串:
LargeBinary
、BINARY
、VARBINARY
等- 日期时间:
Date
、DateTime
、TIMESTAMP
等Constraint
: 约束ForeignKey
: 外键ColumnDefault
: 列默认值kwargs
主要内容:
autoincrement
: (False
)是否是主键default
: (None
)默认值index
: (None
)索引nullable
: (True
)是否可以为空(NULL
)primary_key
: (False
)是否是主键server_default
: (None
)服务端(数据库中的函数)默认值unique
: (False
)是否唯一comment
: (None
)列注释