sqlalchemy欄位與mysql資料庫欄位對應問題
阿新 • • 發佈:2019-02-16
欄位型別是在定義模型時, 對每個 Column
的型別約定. 不同型別的欄位型別在輸入輸出上,
及支援的操作方面, 有所區別.
這裡只介紹 sqlalchemy.types.*
中的型別, SQL
標準型別方面, 是寫什麼最後生成的 DDL 語句就是什麼, 比如 BIGINT
, BLOG
這些,
但是這些型別並不一定在所有資料庫中都有支援. 除此而外, SQLAlchemy 也支援一些特定資料庫的特定型別, 這些需要從具體的 dialects
實現裡匯入.
- Integer/BigInteger/SmallInteger
- 整形.
- Boolean
- 布林型別. Python 中表現為
True/False
BOOLEAN
或SMALLINT
. 例項化時可以指定是否建立約束(預設建立). - Date/DateTime/Time
(timezone=False)
- 日期型別,
Time
和DateTime
例項化時可以指定是否帶時區資訊. - Interval
- 時間偏差型別. 在 Python 中表現為
datetime.timedelta()
, 資料庫不支援此型別則存為日期. - Enum
(*enums, **kw)
- 列舉型別, 根據資料庫支援情況, SQLAlchemy 會使用原生支援或者使用
VARCHAR
型別附加約束的方式實現. 原生支援中涉及新型別建立, 細節在例項化時控制. - Float
- 浮點小數.
- Numeric
(precision=None, scale=None, decimal_return_scale=None, ...)
- 定點小數, Python 中表現為
Decimal
. - LargeBinary
(length=None)
- 位元組資料. 根據資料庫實現, 在例項化時可能需要指定大小.
- PickleType
- Python 物件的序列化型別.
- String
(length=None, collation=None, ...)
- 字串型別, Python 中表現為
Unicode
, 資料庫表現為VARCHAR
, 通常都需要指定長度. - Unicode
- 類似與字串型別, 在某些資料庫實現下, 會明確表示支援非 ASCII 字元. 同時輸入輸出也強制是
Unicode
- Text
- 長文字型別, Python 表現為
Unicode
, 資料庫表現為TEXT
. - UnicodeText
- 參考 Unicode .