• sqlalchemy 对单表的增删改查操作


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



  • 相关阅读:
    使用css制作三角
    BZOJ3029: 守卫者的挑战
    Codeforces 442B. Andrey and Problem
    嘴巴题8 BZOJ2318: Spoj4060 game with probability Problem
    嘴巴题7 BZOJ1426: 收集邮票
    嘴巴题6 BZOJ3450JoyOI1952 Easy
    BZOJ1453: [Wc]Dface双面棋盘
    BZOJ2957: 楼房重建
    BZOJ4515: [Sdoi2016]游戏
    BZOJ3679: 数字之积
  • 原文地址:https://www.cnblogs.com/liaopeng123/p/10372966.html
Copyright © 2020-2023  润新知