什麼是SQLAlchemy?mysql
是Python鏈接SQL數據庫的一種方式,須要經過驅動來鏈接。 sql
是Python中使用最普遍的ORM(對象關係映射)工具之一,即把數據庫中的二維表結構映射成一個list對象,list對象的每個元素是一個tuple,例如: 數據庫
id | name |
1 | 'Michael' |
2 | 'Bob' |
3 | 'Adam' |
[
==> ('1', 'Michael'), ('2', 'Bob'), ('3', 'Adam') ]
爲何要使用SQLAlchemy?json
能夠經過對象來操做數據庫,避免了麻煩的sql語句session
如何使用SQLAlchemy鏈接MySQL數據庫?工具
1 定義映射關係spa
2 鏈接到數據庫code
3 經過對象操做數據庫orm
# 導入: from sqlalchemy import Column, Integer, String, create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base # 建立對象的基類: Base = declarative_base() # 定義User對象: 能夠定義多個類 class User(Base): # 表的名字: __tablename__ = 'user' # 表的結構: id = Column(Integer, primary_key=True) name = Column(String(20))
# 初始化數據庫鏈接: engine = create_engine('mysql+mysqlconnector://root:yourpassword@localhost:3306/test')
# 鏈接信息: '數據庫類型+數據庫驅動名稱://用戶名:口令@機器地址:端口號/數據庫名' # 這裏是用 mysql.connector驅動(pip install mysql), # Python3能夠使用pymysql驅動 'mysql+pymysql://......' # 只能鏈接到已經存在的數據庫,不能新建
# 自動建立表
Base.metadata.create_all(engine)
# 建立DBSession類型: DBSession = sessionmaker(bind=engine)
# 操做數據庫(增刪改查) session = DBSession()
session對象能夠經過三種方式操做數據庫:
A 經過實例對象 session.add(User(id=3, name='zoro')) 、 delete、 ...
B 原生SQL語句 session.execute('select * from user where id=%d' % 3)
C 經過SQL表達式
session.execute('SELECT * FROM user WHERE id=?', {'param': 5})
new_user = User(id='5', name='Bob') session.add(new_user) session.commit() session.close()