一、创建表以及数据库连接,这里使用的是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()
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()
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()
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()