pythonのsqlalchemy简单查询

#!/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()

 

posted @ 2018-09-19 10:03  。低调ヽ继续  阅读(1420)  评论(0编辑  收藏  举报