1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
| #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/4/3 14:48 # @Author : Ropon # @File : sqlalchemy.py
# 导入官宣基础模型 from sqlalchemy.ext.declarative import declarative_base # 实例化官宣基础模型 Base = declarative_base() class User(Base): # 配置表名 __tablename__ = "user" from sqlalchemy import Column, Integer, String # id = Column() # int = Integer # 配置列 整型 主键 自增 nid = Column(Integer, primary_key=True, autoincrement=True) # 同理配置列 字符串 创建索引 name = Column(String(32), index=True)
from sqlalchemy import create_engine # 创建数据库引擎 engine = create_engine("mysql+pymysql://sqlormtest:xxxxxx@x.x.x.x:3306/sqlormtest?charset=utf8") # mysql+pymysql:指定链接那种类型数据库 # sqlormtest:用户名 # xxxxxx:sqlormtest用户的密码 # x.x.x.x:3306 数据库的IP及端口号 # sqlormtest 数据库名 # charset=utf8 数据库字符集
Base.metadata.create_all(engine)
################################################################### from sqlormtest import User # 创建一个操作会话 from sqlalchemy.orm import sessionmaker # 导入之前创建数据库引擎 from sqlormtest import engine
Session = sessionmaker(engine) db_session = Session() ############################################# # 添加数据 user1 = User(name="Ropon") # db_session会话中添加一条 User ORM模型创建的数据 # db_session.add(user1) # 将db_session 会话所有指令一次性提交 # db_session.commit() # 关闭会话 # db_session.close()
# user_list = [ # User(name="Ro"), # User(name="Lp"), # User(name="Pg") # ] # db_session.add_all(user_list) # db_session.commit() # db_session.close() ############################################# # 查询数据 # user_all_list = db_session.query(User).all() # user_all_list = db_session.query(User).filter(User.nid >= 3).all() # print(user_all_list) # for obj in user_all_list: # print(obj.nid, obj.name)
# user = db_session.query(User).filter(User.nid >= 3).first() # print(user.nid, user.name)
# wulong1 = db_session.query(User).filter(User.nid >= 3) # print(wulong1) # # wulong2 = db_session.query(User) # print(wulong2)
############################################# # 修改数据
# res = db_session.query(User).filter(User.nid == 3).update({"name": "LuoPeng"}) # print(res) # db_session.commit() # db_session.close()
############################################# # 删除数据
# res = db_session.query(User).filter(User.nid==2).delete() # print(res) # db_session.commit() # db_session.close()
############################################# # 高级操作 查询 from sqlalchemy.sql import and_, or_ # res = db_session.query(User).filter(and_(User.nid > 2, User.name == "pengge")).first() # print(res.name)
# res = db_session.query(User).filter(or_(User.nid < 3, User.name == "pengge")).all() # print(res)
# 指定列做个别名 name as username # res = db_session.query(User.name.label("username"), User.nid).first() # print(res.nid, res.username)
# res = db_session.query(User).filter(User.name == "ropon").all() # print(res)
# 原生SQL筛选条件 # res = db_session.query(User).filter_by(name="luopeng").all() # res2 = db_session.query(User).filter_by(name="luopeng").first() # print(res) # print(res2.name)
# 字符串匹配筛选条件 order_by 进行排序 from sqlalchemy.sql import text
# res = db_session.query(User).filter(text("nid<:value and name=:name")).params(value=3, name="luopeng").order_by( # User.nid).first() # print(res.nid)
# 原生SQL语句查询? # res = db_session.query(User).filter(text("select * from User id>:value")) # print(res)
# 筛选查询列 # res = db_session.query(User.name).first() # print(res.name)
# 排序 默认升序 加desc()方法降序 # user_list = db_session.query(User.nid).order_by(User.nid.desc()).all() # print(user_list)
# res = db_session.query(User).filter_by(name="ropon").all() # print(res) # 且 # res = db_session.query(User).filter(User.nid > 1, User.name == "pengge").all() # between(1, 3) 大于1小于3 # res2 = db_session.query(User).filter(User.nid.between(1, 3), User.name == "pengge").all() # print(res)
# 只查询nid等于1,3,4 # res = db_session.query(User).filter(User.nid.in_([1, 3, 4])).all() # 查询nid不等于1,2,4 # res2 = db_session.query(User).filter(~User.nid.in_([1, 2, 4])).all() # print(res2[0].nid)
# 子查询 # res = db_session.query(User).filter(User.nid.in_(db_session.query(User.nid).filter_by(name="pg"))).all() # print(res[0].name)
# 且 或 # from sqlalchemy import and_, or_ # res = db_session.query(User).filter(and_(User.nid > 3, User.name == "ropon")).all() # res2 = db_session.query(User).filter(or_(User.nid > 2, User.name == "ropon")).all() # print(res2)
# 通配符 % 取反 ~ # 限制 [1:2] # res = db_session.query(User).filter(User.name.like("ropon%"))[1:2] # print(res)
from sqlalchemy.sql import func # res = db_session.query(User.name).group_by(User.nid).all() # res = db_session.query(func.max(User.nid)).group_by(User.name).all() # print(res)
############################################# # 高级操作 修改
# res = db_session.query(User).filter(User.nid>2).update({"name": "Pgg"}) # res1 = db_session.query(User.nid, User.name).all() # print(res1)
# db_session.query(User).filter(User.nid>3).update({User.name: User.name + "GoodBoy"}, synchronize_session=False) db_session.query(User).filter(User.nid<2).update({User.name: User.name + 123}, synchronize_session="evaluate")
db_session.commit() db_session.close()
|