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子類:
PrimaryKeyConstraintForeignKeyConstraint
注意,在使用不同版本的SQLAlchemy時,以上參數中:
- 老版本中可能部分參數還沒有
- 新版本中可能廢棄了部分參數
keep_existing與extend_existing互相排斥,不能同時傳遞為Truekeep_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)列注釋
