1. 程式人生 > >SQLAlchemy Table(表)類方式 - Table類和Column類

SQLAlchemy Table(表)類方式 - Table類和Column類

註釋 pri sta small 類型 replace num server metadata

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
        • autoloadTrue時, 會從傳遞的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_existingextend_existing互相排斥,不能同時傳遞為True
  • keep_existingextend_existing適用於新建表對象;如果要創建新的表,表明已經存在於meta.tables中時,需要指明任意一個參數,不然會報錯。
  • useexisting已被廢棄, 新版本使用extend_existing

Column的構造方法

Column([name, ]type_[, **kwargs])

參數說明:
  • name 字段名
  • type_ 字段數據類型,這裏的數據類型包括:
    • SQLAlchemy中常用數據類型:
      • 整數: SmallIntegerIntegerBigInteger
      • 浮點數: FloatNumeric
      • 文本字符串: StringTextUnicodeUnicodeTextCHARVARCHAR
      • 二進制字符串: LargeBinaryBINARYVARBINARY
      • 日期時間: DateDateTimeTIMESTAMP
    • Constraint: 約束
    • ForeignKey: 外鍵
    • ColumnDefault: 列默認值
  • kwargs主要內容
    • autoincrement: (False)是否是主鍵
    • default: (None)默認值
    • index: (None)索引
    • nullable: (True)是否可以為空(NULL)
    • primary_key: (False)是否是主鍵
    • server_default: (None)服務端(數據庫中的函數)默認值
    • unique: (False)是否唯一
    • comment: (None)列註釋

SQLAlchemy Table(表)類方式 - Table類和Column類