一 、SQLAlchemy——创建表
1.创建一个 class
| |
| |
| from sqlalchemy.ext.declarative import declarative_base |
| |
| Base = declarative_base() |
| |
| |
| |
| from sqlalchemy import Column, Integer, INT, INTEGER, VARCHAR, String |
| |
| |
| class User(Base): |
| __tablename__ = 'user' // user是即将创建的数据表名称 |
| id = Column(Integer, primary_key=True, autoincrement=True) |
| name = Column(String(32), index=True) |
2. 创建数据引擎
| |
| |
| from sqlalchemy import create_engine |
| engine = create_engine('mysql+pymysql://root:root@localhost:3306/fast_demo?charset=utf8') |
| |
| |
| |
3. 将所有的继承Base的Class序列化成数据表
| |
| |
| Base.meatdata.create_all(engine) |
| |
二 、SQLAlchemy——增
原生SQL语句
:
insert into '表名'(name) values (值1, 值2, ...)
| |
| |
| |
| from create_table import engine |
| |
| |
| from sqlalchemy.orm import sessionmaker |
| Session_windew = sessionmaker(engine) |
| |
| |
| db_session = Session_window() |
| |
| |
| from create_table import User |
| user_obj = User(name='aabbcc') |
| db_session.add(user_obj) |
| db_session.commit() |
| db_session.close() |
| |
| from create_table import User |
| user_obj_list = ['User(name='zs'), User(name='lisi')'] |
| db_session.add_all(user_obj_list) |
| db_session.commit() |
| db_session.close() |
三 、SQLAlchemy——查
原生SQL语句
:
sellect 字段[,字段一,字段二,...] from 表名 [其他操作]
| |
| |
| from create_table import engine, User |
| from sqlalchemy.orm import sessionmaker |
| |
| |
| Session = sessionmaker(engine) |
| db_session = Session() |
| |
| |
| user_obj = db_session.query(User).first() |
| print(user_obj.id, user_obj.name) |
| |
| user_obj_list = db_session.query(User).all() |
| print(user_obj_list) |
| for row in user_obj_list: |
| print(row.id, row.name) |
| |
| |
| |
| user_obj1 = db_session.query(User).filter(User.id <=2,User.name == 'zs').all() |
| print(user_obj1) |
| for row in user_obj1: |
| print(row.id, row.name) |
| |
| |
| |
| user_obj1 = db_session.query(User).filter(User.id =2,User.name = 'zs').all() |
| print(user_obj1) |
| for row in user_obj1: |
| print(row.id, row.name) |
| |
四 、SQLAlchemy——改
原生SQL语句
:
update 表名 set 字段名=“value”, ...
| |
| |
| from sqlalchemy.orm import sessionmaker |
| from create_table import engine,User |
| |
| |
| Session = sessionmaker(engine) |
| db_session = Session() |
| |
| |
| user_obj = db_session.query(User).filter(User.id == 1).update({"name":"ww"}) |
| db_session.commit() |
| |
| |
| user_obj = db_session.query(User).filter(User.id >= 1).update({"name":"666"}) |
| db_session.commit() |
| |
| |
五 、SQLAlchemy——删
原生SQL语句
:
delete from 表名 [筛选条件]
——此命令只会删除表内数据,不会删除表
drop 表名
——此命令会直接删除表本身
| |
| |
| from sqlalchemy.orm import sessionmaker |
| from create_table import engine,User |
| |
| |
| Session = sessionmaker(engine) |
| db_session = Session() |
| |
| |
| res = db_session.query(User).filter(User.id==1).delete() |
| db_session.commit() |
| print(res) |
| |
| |
| res = db_session.query(User).filter(User.id>=1).delete() |
| db_session.commit() |
| print(res) |
| |
六 、高级用法
并条件:,连接或者 and_()
| db_session.query(User).filter(User.name == 'zs', User.uid == 1).first() |
或条件: or_()
| db_session.query(User).filter(or_(User.name == 'zs', User.uid == 1)).all() |
筛选字段:
| db_session.query(User.gender, User.name).filter(User.name == 'zs', User.uid == 1).first() |
别名(不影响数据库):.label()
| db_session.query(User.gender.label('xb'), User.name).filter(User.name == 'zs', User.uid == 1).first() |
排序:order_by() 默认asc(升序),desc(降序)
| db_session.query(User).order_by(User.uid.desc).first() |
between筛选:between()
| db_session.query(User).filter(User.uid.between(1, 10)).all() |
in筛选:in_()
| db_session.(User).filter(User.uid.in_([1, 2, 3])).all() |
not in筛选:~ 或者 notin_()
| db_session.(User).filter(User.uid.notin_([1, 2, 3])).all() |
文本序列:
| from sqlalchemy.sql import text |
| |
| res = db_session.query(User).filter(text('id<value and name=:name')).params(value=4, name='lisi') |
聚合:
| from sqlalchemy.sql import func |
| db_session.query(func.count(user.gender).label('count'), User.gender).group_by(User.gender).all() |
引用添加:
| |
| db_session.query(User).filter(User.id == 3).update({User.anme: User.name + '666'}.synchronize_session=False) |
-end-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)