安裝:sudo pip3 install sqlalchemy
model定義
首先導(dǎo)入from sqlalchemy.ext.declarative import declarative_base
然后創(chuàng)建一個實(shí)例看锉,Base=declarative_base()
,后面所有定義的model都是Base的子類暑刃,繼承Base琼牧。
model中一條數(shù)據(jù)類似于Excel的行,使用Column命黔。
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String
Base=declarative_base()
class User(Base):
__tablename__='user'
id=Column(Integer,primary_key=True,autoincrement=True)
name=Column(String(20),unique=True,nullable=False)
pwd=Column(String(100),nullable=False)
info=Column(Text)
def __repr__(self):
return '<User %r>'%self.name
數(shù)據(jù)庫的連接
from sqlalchemy import create_engine
eng=create_engine(DB_URI)
DB_URI的格式如下:dialect+driver://username:password@host:port/database
例如Mysql件豌,DB_URI=mysql+mysqlclient://scott:tiger@localhost/foo
1.常用字段類型
類型 | python中類型 | 說明 |
---|---|---|
Integer | int | 普通整數(shù),一般是32位 |
SmallInteger | int | 取值范圍小的整數(shù)喷斋,一般是16位 |
BigInteger | int/long | 不限制精度的整數(shù) |
Float | float | 浮點(diǎn)數(shù) |
Numeric | decimal.Decimal | 普通整數(shù)唁毒,一般是32位 |
String | str | 變長字符串,一般String(10)注明長度 |
Text | str | 變長字符串星爪,對較長或不限長度的字符串做了優(yōu)化浆西,不用指明長度 |
Unicode | unicode | 變長Unicode字符串 |
UnicodeText | unicode | 變長Unicode字符串,對較長或不限長度的字符串做了優(yōu)化 |
Boolean | boolean | 布爾值 |
Date | datetime.date | 時(shí)間 |
Time | time | 時(shí)間和日期 |
LagreBinary | str | 二進(jìn)制文件 |
2. 常用列選項(xiàng)
選項(xiàng) | 說明 |
---|---|
primary_key | 主鍵顽腾,True近零、False |
unique | 如果為True,代表這列不允許出現(xiàn)重復(fù)的值 |
index | 如果為True抄肖,為這列創(chuàng)建索引秒赤,提高查詢效率 |
nullable | 如果為True,允許有空值憎瘸,如果為False入篮,不允許有空值 |
default | 定義默認(rèn)值 |
3. 關(guān)系選項(xiàng)
選項(xiàng) | 說明 |
---|---|
backref | 在關(guān)系的另一模型中添加反向引用 |
primaryjoin | 明確指定兩個模型之間使用的聯(lián)結(jié)條件 |
uselist | 如果為False,不使用列表幌甘,而使用標(biāo)量值 |
order_by | 指定關(guān)系中記錄的排序方式 |
secondary | 指定多對多中記錄的排序方式 |
secondaryjoin | 在SQLAlchemy中無法自行決定時(shí)潮售,指定多對多關(guān)系中的二級聯(lián)結(jié)條件 |