1. 程式人生 > 實用技巧 >sqlalchemy 單表操作

sqlalchemy 單表操作

SQLAlchemy

  • 建立基類

    from sqlalchemy.ext.declarative import declarative_base
    # 基類
    Base = declarative_base()
    
  • 建立 session 會話

    from sqlalchemy import create_engine
    from sqlalchemy.orm import sessionmaker
    # 建立連線
    engine = create_engine('mysql://root:[email protected]:3306/admin')
    Session = sessionmaker(bind=engine)
    # 建立session會話
    session = Session()
    
  • 單表操作

    • 建立 User

      class User(Base):
          ''' 使用者類 '''
          __tablename__ = 'user'
      	# id 主鍵、自增
          id = Column(Integer,primary_key=True,autoincrement=True)
          # 名稱
          name = Column(String(32),unique=True)
      
    • 資料查詢

      # 查詢所有的資料
      data = session.query(User).all()
      # 查詢第一條資料
      data = session.query(User).first()
      # 查詢指定的資料列
      data = session.query(User.name).all()
      # 查詢name=Bob的資料
      data = session.query(User).filter(User.name=='Bob').first()
      # 按id倒序查詢
      data = session.query(User).order_by(User.id.desc()).all()
      # 分頁
      data = session.query(User).limit(1).offset(0).all()
      # 查詢數量
      data = session.query(User).count()
      # 聚合 求平均數
      data = session.query(func.avg(User.id)).first()
      # 聚合 求和值
      data = session.query(func.sum(User.id)).first()
      
    • 增加資料

      # 新增一條資料
      try:
          user = User(name='xima')
          session.add(user)
          # 事務提交
          session.commit()
      except:
          # 事務回滾
          session.rollback()
       
      -------------------------------------------------------------------------------
      
      # 新增多條資料
      try:
          session.add_all([
              User(name='donghuadijun'),
              User(name='baihushengzhu')
          ])
          session.commit()
      except:
          session.rollback()
      
    • 更新資料

      try:
          session.query(User).filter(User.id==1).update({'name':'FQ'})
          session.commit()
      except:
          session.rollback()
      
    • 刪除資料

      try:
          session.query(User).filter(User.id==1).delete()
          session.commit()
      except:
          session.rollback()