首页 > 技术文章 > sqlalchemy 对单表的增删改查操作

liaopeng123 2019-02-14 09:55 原文

一、创建表以及数据库连接,这里使用的是mysql

 1 from sqlalchemy.ext.declarative import declarative_base
 2 from sqlalchemy import create_engine
 3 from sqlalchemy import Column, Integer, String
 4 Base = declarative_base() # 相当于model
 5 
 6 
 7 # 创建表模型
 8 class User(Base):
 9     __tablename__ = "user"  # 表名
10     id = Column(Integer, primary_key=True, autoincrement=True)
11     name = Column(String(32), index=True)
12 
13 
14 # 创建数据库引擎, 连接数据库
15 engine = create_engine("mysql+pymysql://root:@127.0.0.1:3306/bms?charset=utf8")
16 # 把所有继承 Base 表的模型类生成表
17 Base.metadata.create_all(engine)

root 后面跟的是密码,若没有则不写,我这里没有

 

二、创建表之后可以对表进行增删改查

1、添加数据操作

 1 # 导入创建的数据库引擎
 2 from crud.create_table import engine
 3 from sqlalchemy.orm import sessionmaker
 4 # 导入创建的表
 5 from crud.create_table import User
 6 # 创建会话窗口
 7 Session = sessionmaker(engine)
 8 # 打开会话窗口
 9 db_session = Session()
10 
11 # 1添加数据
12 user_obj = User(name="lihua")
13 db_session.add(user_obj)
14 
15 db_session.commit()
16 db_session.close()
17 
18 # 2批量添加数据 add_all 方法
19 db_session.add_all([
20     User(name="张三"),
21     User(name="李四"),
22     User(name="王五"),
23 ])
24 
25 db_session.commit()
26 db_session.close()
View Code

 2、查询数据

 1 from crud.create_table import User, engine
 2 from sqlalchemy.orm import sessionmaker
 3 Session = sessionmaker(engine)
 4 db_session = Session()
 5 
 6 # 一次查询所有
 7 ret = db_session.query(User).all()
 8 # .all()查询结果是列表,可以循环打印
 9 for i in ret:
10     print(i.name, i.id, )
11 
12 # 带条件查询,第一种是filter
13 user_list = db_session.query(User).filter(User.id == 4).all()
14 print(user_list[0])
15 
16 # 第二种的带条件查询
17 user_list = db_session.query(User).filter_by(id=4)
18 print(user_list[0])
19 
20 # 第三种
21 user_list = db_session.query(User).filter(User.id >= 2).all()
22 print(user_list)
23 
24 db_session.commit()
25 db_session.close()
View Code

3、修改数据

from crud.create_table import User
from crud.create_table import engine

from sqlalchemy.orm import sessionmaker
Session = sessionmaker(engine)
db_session = Session()

# 修改数据之前先查询数据 update放入字典
# res = db_session.query(User).filter(User.id == 4).update({"name": "张楠"})

# 一次修改多条数据
res = db_session.query(User).filter(User.id >= 1).update({"name": "张楠"})

db_session.commit()
db_session.close()
View Code

4、删除数据

 1 from crud.create_table import User
 2 from crud.create_table import engine
 3 
 4 from sqlalchemy.orm import sessionmaker
 5 Session = sessionmaker(engine)
 6 db_session = Session()
 7 # 删除一条数据或多条数据
 8 res = db_session.query(User).filter(User.id >= 4).delete()
 9 print(res)
10 
11 db_session.commit()
12 db_session.close()
View Code

 



推荐阅读