1. 程式人生 > >python使用SQLAlchemy模塊連接MySQL

python使用SQLAlchemy模塊連接MySQL

保存 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 import
declarative_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