#!/usr/bin/env python import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Integer,String from sqlalchemy.orm import sessionmaker # 創建連接 echo=True 就會打印出所有過程信息 engine = create_engine("mysql+pymysql://root:root@localhost/testuser",encoding="utf-8",echo=True) # Base = declarative_base() # 生成orm基類 class User(Base): __tablename__= "user" id = Column(Integer,primary_key=True) name = Column(String(32)) password = Column(String(64)) Base.metadata.create_all(engine) # 創建表結構 Session_class = sessionmaker(bind=engine) # 創建與數據庫的會話session class 注意,這里返回的是一個class,不是實例 session = Session_class() # # user_obj = User(name="zhangpeng",password="123") # 生成你要創建的數據對象 # print(user_obj.name,user_obj.id) # 此時還沒有創建對象,ID為None # # session.add(user_obj) # print(user_obj.name,user_obj.id) # 此時依然為空 # session.commit() # 統一提交 # filter_by(name="zhangpeng") 條件; all 全部 first 第一個 # filter(User.id>2) ;按照ID查詢 # data = session.query(User).filter_by(name="zhangsan").all() # -- 修改 data = session.query(User).filter_by(name="aaa").first() if(data is not None): data.name = "zhangsan" session.commit() # 提交 # -- 修改 # -- 回滾 my_user = session.query(User).filter_by(id=1).first() my_user.name = "Jack" fake_user = User(name="Rain",password="123456") session.add(fake_user) # 這時候看session里有你剛添加的數據 print("....",session.query(User).filter(User.name.in_(["jack","rain"])).all()) session.rollback() # 此時回滾一下,之前數據應該就消失了 print(session.query(User).filter(User.name.in_(["jack","rain"])).all()) # -- 回滾 # 獲取所有數據 print(session.query(User.name,User.id).all()) # 多條件查詢 objs = session.query(User).filter(User.id>0).filter(User.id<7).all() # 查詢出來是一個數組 print(objs[0].name) # 模糊查詢,並統計個數 count = session.query(User).filter(User.name.like("%y%")).count() print(count) # 分組查詢 from sqlalchemy import func print(session.query(func.count(User.name),User.name).group_by(User.name).all()) # 刪除 del_user = session.query(User).filter(User.id==1).first() session.delete(del_user) session.commit()