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

青葉菩提發表於2018-10-25

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)列註釋

 

相關文章