zoukankan      html  css  js  c++  java
  • 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



  • 相关阅读:
    [leetcode]Interleaving String
    [leetcode]Scramble String
    [leetcode]Divide Two Integers
    [leetcode]Implement strStr()
    python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
    GitHub新手快速入门日常操作流程
    smtplib.SMTPDataError: (554, 'DT:SPM 126 smtp5错误解决办法
    wamp中修改后mysq数据库l闪退无法登陆解决办法
    运行python代码报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 91: ordinal not in range(128)的解决办法
    测试人员如何搭建Selenium-Grid2环境(参考Java)
  • 原文地址:https://www.cnblogs.com/liaopeng123/p/10372966.html
Copyright © 2011-2022 走看看