sqlalchemy 單表操作
阿新 • • 發佈:2020-12-15
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()
-