pythonのsqlalchemy简单查询

时间:2021-11-13 05:35:41
#!/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="")
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()