python使用SQLAlchemy模塊連接MySQL
阿新 • • 發佈:2017-08-15
保存 date bind word creat 刪除數據 sta pri 自動 :端口號/數據庫名
ORM技術:Object-Relational Mapping,負責把關系數據庫的表結構映射到對象上。
1.安裝SQLAlchemy模塊
pip install sqlalchemy
2.初始化連接
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 from sqlalchemy import Column, create_engine 5 from sqlalchemy.types import * 6 from sqlalchemy.orm import sessionmaker 7 from sqlalchemy.ext.declarative importdeclarative_base 8 9 # 連接數據庫 10 sql_connect = ‘mysql://user:[email protected]:port/database‘ 11 engine = create_engine(sql_connect) 12 # 創建DBSession類型: 13 DBSession = sessionmaker(bind=engine)
註:紅色部分:數據庫類型://用戶名:[email protected]:端口號/數據庫名.
完整的則為:數據庫類型+數據庫驅動://用戶名:[email protected]
3.自動建表
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 from sqlalchemy import Column 5 from sqlalchemy.types import * 6 from sqlalchemy.ext.declarative import declarative_base 7 from sqlalchemy import create_engine 8 from sqlalchemy.orm import sessionmaker 9 10 # 連接數據庫 11 sql_connect = ‘mysql://ruser:[email protected]:port/datbase‘ 12 engine = create_engine(sql_connect) 13 DBSession = sessionmaker(bind=engine) 14 # 創建對象的基類: 15 BaseModel = declarative_base() 16 17 #定義對象 18 class User(BaseModel): 19 # 表名 20 __tablename__ = ‘user‘ 21 # 表結構 22 id = Column(String(20), primary_key=True) 23 name = Column(String(20)) 24 age = Column(Integer) 25 26 #初始化數據庫 27 def init_db(): 28 BaseModel.metadata.create_all(engine) 29 30 #刪除所有數據表 31 def drop_db(): 32 BaseModel.metadata.drop_all(engine)
4.添加數據
1 # 創建session對象,相當於MySQLdb裏面的遊標 2 session = DBSession() 3 # 創建新User對象: 4 new_user = User(id=‘2‘, name=‘John‘, age=13) 5 # 添加到session: 6 session.add(new_user) 7 # 提交即保存到數據庫 8 session.commit() 9 # 關閉session 10 session.close()
5.查詢數據
在查詢語句中的where子句用filter()替代,不過匹配的值需要用"==";如果使用filter_by(),則使用"="即可。
查詢一條:
1 # 創建Session: 2 session = DBSession() 3 # 創建Query查詢,filter是where條件,最後調用one()返回唯一行,如果調用all()則返回所有行: 4 user = session.query(User).filter(User.name == ‘John‘, User.age > 12).one() 5 # 打印類型和對象的name屬性: 6 print ‘type:‘, type(user) 7 print ‘age:‘, user.age 8 # 關閉Session: 9 session.close()
查詢多條:
1 1 # 創建Session: 2 2 session = DBSession() 3 3 # 創建Query查詢,filter是where條件,最後調用one()返回唯一行,如果調用all()則返回所有行: 4 4 users = session.query(User).filter(User.name == ‘John‘).all() 5 5 # 打印類型和對象的name屬性: 6 6 print ‘type:‘, type(users) 7 7 for u in users: 8 8 print u.id 9 9 # 關閉Session: 10 10 session.close()
6.更新數據
方式一:
1 # 創建Session: 2 session = DBSession() 3 # 可以進行多條數據更新 4 user = session.query(User).filter(User.id == ‘5‘) 5 user.update({User.age: 14}) 6 # 提交數據 7 session.commit() 8 # 關閉Session 9 session.close()
方式二:
# 創建Session: session = DBSession() # 可以進行多條數據更新 user = session.query(User).filter_by(id=‘5‘).one() user.age = 16 # 提交數據 session.commit() # 關閉Session session.close()
7.刪除數據
1 # 創建Session 2 session = DBSession() 3 # 刪除哪些數據 4 user = session.query(User).filter(User.id == ‘6‘).one() 5 session.delete(user) 6 # 提交數據 7 session.commit() 8 # 關閉session 9 session.close()
python使用SQLAlchemy模塊連接MySQL