赞
踩
1,创建表:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,INT,INTEGER,VARCHAR,String
from sqlalchemy import create_engine
import pymysql
Base=declarative_base() #创建了一个 BaseModel 类,这个类的子类可以自动与一个表关联
class User(Base): #继承Base基类
__tablename__ = 'user' #表名
id = Column(Integer,primary_key=True,autoincrement=True) # id字段,Integer表示整形
name = Column(String(32),index=True) # name字段,string(32)定长字符
engine = create_engine('mysql+pymysql://root:dd112211@127.0.0.1:3306/sqlalchemy?charset=utf8') #数据库引擎
Base.metadata.create_all(engine) #将所有继承Base类的表创建
2,新增: session.add
新增1条:
from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Integer,INT,INTEGER,VARCHAR,String from sqlalchemy import create_engine import pymysql Base=declarative_base() #创建了一个 BaseModel 类,这个类的子类可以自动与一个表关联 class User(Base): #继承Base基类 __tablename__ = 'user' #表名 id = Column(Integer,primary_key=True,autoincrement=True) # id字段,Integer表示整形 name = Column(String(32),index=True) # name字段,string(32)定长字符 engine = create_engine('mysql+pymysql://root:dd112211@127.0.0.1:3306/sqlalchemy?charset=utf8') # 数据库引擎 Session_window = sessionmaker(engine) # 实例化会话窗口 db_session = Session_window() # 打开会话窗口 user_obj = User(name="DragonFire") # 创建sql语句,相当于insert into table(name) values("123") db_session.add(user_obj) # 添加sql语句 db_session.commit() # 执行全部的sql语句 db_session.close() # 关闭会话窗口
新增多条 session.add_all:
from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Integer,INT,INTEGER,VARCHAR,String from sqlalchemy import create_engine import pymysql Base=declarative_base() #创建了一个 BaseModel 类,这个类的子类可以自动与一个表关联 class User(Base): #继承Base基类 __tablename__ = 'user' #表名 id = Column(Integer,primary_key=True,autoincrement=True) # id字段,Integer表示整形 name = Column(String(32),index=True) # name字段,string(32)定长字符 engine = create_engine('mysql+pymysql://root:dd112211@127.0.0.1:3306/sqlalchemy?charset=utf8') # 数据库引擎 Session_window = sessionmaker(engine) # 实例化会话窗口 db_session = Session_window() # 打开会话窗口 user_obj_list = [User(name="天一"),User(name="天二")] db_session.add_all(user_obj_list) # 添加任务 db_session.commit() # 执行任务 db_session.close() # 关闭会话
3,查询: session.query
普通查询:
from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Integer,INT,INTEGER,VARCHAR,String from sqlalchemy import create_engine import pymysql Base=declarative_base() #创建了一个 BaseModel 类,这个类的子类可以自动与一个表关联 class User(Base): #继承Base基类 __tablename__ = 'user' #表名 id = Column(Integer,primary_key=True,autoincrement=True) # id字段,Integer表示整形 name = Column(String(32),index=True) # name字段,string(32)定长字符 engine = create_engine('mysql+pymysql://root:dd112211@127.0.0.1:3306/sqlalchemy?charset=utf8') # 数据库引擎 Session_window = sessionmaker(engine) # 实例化会话窗口 db_session = Session_window() # 打开会话窗口 user_obj = db_session.query(User).first() # 查询user表第一条 print(user_obj.id,user_obj.name) user_obj_list = db_session.query(User).all() #查询user表所有 print(user_obj_list) for row in user_obj_list: print(row.id,row.name)
条件查询:
from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Integer,INT,INTEGER,VARCHAR,String from sqlalchemy import create_engine import pymysql Base=declarative_base() #创建了一个 BaseModel 类,这个类的子类可以自动与一个表关联 class User(Base): #继承Base基类 __tablename__ = 'user' #表名 id = Column(Integer,primary_key=True,autoincrement=True) # id字段,Integer表示整形 name = Column(String(32),index=True) # name字段,string(32)定长字符 engine = create_engine('mysql+pymysql://root:dd112211@127.0.0.1:3306/sqlalchemy?charset=utf8') # 数据库引擎 Session_window = sessionmaker(engine) # 实例化会话窗口 db_session = Session_window() # 打开会话窗口 # 单条件查询 user_obj = db_session.query(User).filter(User.id>1).all() # 查询user.id大于1的所有数据 user_obj = db_session.query(User).filter(User.name=='天一').all() # 查询name为天一的数据 # 多条件查询,使用','逗号隔开 user_obj = db_session.query(User).filter(User.id>1,User.name=='天一').all() # 查询id大于1且name为天一的数据 # between在a,b之间 user_obj = db_session.query(User).filter(User.id.between(1,3)).all() # 查询id在1到3之间的数据 # in_(),接收一个列表 user_obj = db_session.query(Users).filter(Users.id.in_([1,3,4])).all() #查询id在[1,3,4]列表里面的数据 # ~取反 user_obj = db_session.query(Users).filter(~Users.id.in_([1,3,4])).all() #查询id不在[1,3,4]列表里面的数据 ret = session # 子查询 db_session.query(Users).filter(Users.id.in_(db_session.query(Users.id).filter_by(name='天二'))).all() # 查询条件的关系and or from sqlalchemy import and_, or_ # and_ user_obj = db_session.query(Users).filter(and_(Users.id > 3, Users.name == '天一')).all() # 查id大于3且name是天一的数据 # or_ user_obj = db_session.filter(or_(Users.id < 2, Users.name == '天一')).all() # 查询id大于2或者name是天一 # 组合关系 user_obj = db_session.query(Users).filter( or_( Users.id < 2, and_(Users.name == '天一', Users.id > 3), Users.extra != "" )).all() # 通配符%,模糊匹配like(),%表示0到多个 user_obj = db_session.query(Users).filter(Users.name.like('天%')).all() # 查询name是天*数据 user_obj = db_session.query(Users).filter(~Users.name.like('天%')).all() # 查询name是非天*数据 # 限制 limit user_obj = db_session.query(Users)[1:2] # 排序 user_obj = db_session.query(Users).order_by(Users.name.desc()).all() #通过name排序 # 多条件排序是按第一种方式排出现相同时,将相同值按第二种方式排 user_obj = db_session.query(Users).order_by(Users.name.desc(), Users.id.asc()).all()
4,修改:session.query().update()
from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Integer,INT,INTEGER,VARCHAR,String from sqlalchemy import create_engine import pymysql Base=declarative_base() #创建了一个 BaseModel 类,这个类的子类可以自动与一个表关联 class User(Base): #继承Base基类 __tablename__ = 'user' #表名 id = Column(Integer,primary_key=True,autoincrement=True) # id字段,Integer表示整形 name = Column(String(32),index=True) # name字段,string(32)定长字符 engine = create_engine('mysql+pymysql://root:dd112211@127.0.0.1:3306/sqlalchemy?charset=utf8') # 数据库引擎 Session_window = sessionmaker(engine) # 实例化会话窗口 db_session = Session_window() # 打开会话窗口 # 1.修改一条数据 user_obj = db_session.query(User).filter(User.id == 1).update({"name":"天三"}) db_session.commit() # 2.修改多条数据 user_obj = db_session.query(User).filter(User.id >= 1).update({"name":"天六"}) db_session.commit() # 3.在原表基础上修改 # synchronize_session用于query在进行delete or update操作时,对session的同步策略 #False - 不对session进行同步,直接进行delete or update操作。 #'fetch'-在delete or update操作之前,先发一条sql到数据库获取符合条件的记录。 # 'evaluate' 在delete or update操作之前,用query中的条件直接对session的identity_map中的objects进行eval操作,将符合条件的记录下来。 session.query(Users).filter(Users.id > 0).update({Users.name: Users.name + "099"}, synchronize_session=False) session.query(Users).filter(Users.id > 0).update({"age": Users.age + 1}, synchronize_session="evaluate")
5,删除:session.query().delete()
from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Integer,INT,INTEGER,VARCHAR,String from sqlalchemy import create_engine import pymysql Base=declarative_base() #创建了一个 BaseModel 类,这个类的子类可以自动与一个表关联 class User(Base): #继承Base基类 __tablename__ = 'user' #表名 id = Column(Integer,primary_key=True,autoincrement=True) # id字段,Integer表示整形 name = Column(String(32),index=True) # name字段,string(32)定长字符 engine = create_engine('mysql+pymysql://root:dd112211@127.0.0.1:3306/sqlalchemy?charset=utf8') # 数据库引擎 Session_window = sessionmaker(engine) # 实例化会话窗口 db_session = Session_window() # 打开会话窗口 # 1.删除数据 res = db_session.query(User).filter(User.id == 1).delete() db_session.commit() # 2.删除多条数据 res = db_session.query(User).filter(User.id>=1).delete() db_session.commit()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。