#!/usr/bin/python# -*- coding: utf-8 -*-from sqlalchemy import create_enginefrom sqlalchemy import Table, MetaData, Column, Integer, Stringfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.orm import mapper, sessionmaker# 创建实例,并连接test库engine = create_engine("mysql+pymysql://root:123@localhost/demoDb?charset=utf8", encoding='utf-8', echo=True)metadata = MetaData()# echo=False 显示信息Base = declarative_base() # 生成orm基类class User(Base): __tablename__ = 'user' # 表名 id = Column(Integer, primary_key=True) name = Column(String(32)) password = Column(String(64)) def __init__(self): # 创建与数据库的会话session class ,注意,这里返回给session的是个class,不是实例 self.session_class = sessionmaker(bind=engine) # 实例和engine绑定 self.session = self.session_class() # 生成session实例,相当于游标 # 创建表 def create_user(self): Base.metadata.create_all(engine) # 创建表结构 (这里是父类调子类) # 新增数据 def insert_user(self, user): self.session.add(use) # 把要创建的数据对象添加到这个session里, 一会统一创建 return self.session.commit() # 现此才统一提交,创建数据 # 根据一个字段查询 def sel_user(self): my_user = self.session.query(User).filter_by(name="12").first() # 查询 return my_user ''' ---------------- 条件查询 ---------------- my_user1 = self.session.query(User).filter(User.id > 2).all() my_user2 = self.session.query(User).filter_by(id=27).all() # filter_by相等用‘=’ my_user3 = self.session.query(User).filter(User.id == 27).all() # filter相等用‘==’ ---------------- 多条件查询 ---------------- objs = self.session.query(User).filter(User.id>0).filter(User.id<7).all() -------------- 模糊查询,返回count ------------ self.session.query(User).filter(User.name.like("f%")).count() # mysql不区分大小写 ---------------- 分组查询 ---------------- self.session.query(User.name,func.count(User.name)).group_by(User.name).all() ---------------- 连表查询 ---------------- ret = self.session.query(Users, Favor).filter(Users.id == Favor.nid).all() # 以下两种 必须表之间有外键关联才能查 ret = session.query(Person).join(Favor).all() ret = session.query(Person).join(Favor, isouter=True).all() ''' # 查询所有 def sel_user_all(self): return self.session.query(User).all() # return self.session.query(User.id,User.name).all() #查询所有,结果集只包含 id,name # 修改操作 def up_user(self): my_user = self.session.query(User).filter_by(name="fgf").first() my_user.name = "fenggf" # 查询出来之后直接赋值修改 my_user.passwork = "123qwe" self.session.commit()if __name__ == '__main__': use = User() user_list = use.sel_user_all() for us in user_list: print us.name