当前位置:   article > 正文

SQLAlchemy基础操作_sqlalchemy between

sqlalchemy between

一 、SQLAlchemy——创建表

# ORM
# 1. Class - Obj
# 2. 创建数据库引擎
# 3. 将所有的Class序列化为数据表
# 4. ORM操作 - CRUD(增删改查操作的简称)
  • 1
  • 2
  • 3
  • 4
  • 5

1.创建一个 class

# create_table.py

from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
# Base 是ORM模型的基类
# ORM模型 - Obj里面的属性 == table中创建的字段

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

2. 创建数据引擎

# create_table.py

from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://root:root@localhost:3306/fast_demo?charset=utf8')
# 'mysql+sqlalchemy://用户名:密码@数据库主机地址:端口号/数据库名?字符编码格式(可选)'
# ?字符编码格式(可选)
# 如果存储内容中文,建议设置charset = utf8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3. 将所有的继承Base的Class序列化成数据表

# create_table.py

Base.meatdata.create_all(engine)
# 在基类中寻找所有继承自我的Class,在engine里实现
  • 1
  • 2
  • 3
  • 4

二 、SQLAlchemy——增

# 1. 选中数据库 - 创建数据库引擎 导入数据库引擎
# 2. 创建查询窗口 - 必须是选中数据的查询窗口
# 3. 创建sql语句
# 4. 点击运行
  • 1
  • 2
  • 3
  • 4
  • 增加一条数据

原生SQL语句:
insert into '表名'(name) values (值1, 值2, ...)

# crud_insert.py

# 1. 选中数据库 - 创建数据库引擎 导入数据库引擎
from create_table import engine

# 2. 创建查询窗口 - 必须是选中数据的查询窗口
from sqlalchemy.orm import sessionmaker
Session_windew = sessionmaker(engine)

# 打开查询窗口
db_session = Session_window()

# 3. 创建sql语句
from create_table import User
user_obj = User(name='aabbcc') # 创建sql语句
db_session.add(user_obj) # 相当于将sql语句粘贴到查询窗口
db_session.commit() # 执行sql语句
db_session.close() # 关闭

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 增加多条数据
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()
  • 1
  • 2
  • 3
  • 4
  • 5

三 、SQLAlchemy——查

  • 查询数据

原生SQL语句:
sellect 字段[,字段一,字段二,...] from 表名 [其他操作]

# crud_select.py

from create_table import engine, User
from sqlalchemy.orm import sessionmaker

# 创建查询窗口
Session = sessionmaker(engine)
db_session = Session()

# 1.查询数据:
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)
  
# 2.带条件的查询
# filter(表达式)
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)
  
# filter(表达式)
# filter_by(传参),不推荐使用,不方便
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)

  • 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

四 、SQLAlchemy——改

  • 更新数据

原生SQL语句:

update 表名 set 字段名=“value”, ...

# crud_update.py

from sqlalchemy.orm import sessionmaker
from create_table import engine,User

# 创建查询窗口
Session = sessionmaker(engine)
db_session = Session()

# 1. 修改一条数据
user_obj = db_session.query(User).filter(User.id == 1).update({"name":"ww"})
db_session.commit()

# 2. 修改多条数据
user_obj = db_session.query(User).filter(User.id >= 1).update({"name":"666"})
db_session.commit()


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

五 、SQLAlchemy——删

  • 删除数据

原生SQL语句:

delete from 表名 [筛选条件]——此命令只会删除表内数据,不会删除表

drop 表名——此命令会直接删除表本身

# crud_delete.py

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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

六 、高级用法

并条件:,连接或者 and_()

db_session.query(User).filter(User.name == 'zs', User.uid == 1).first()
  • 1

或条件: or_()

db_session.query(User).filter(or_(User.name == 'zs', User.uid == 1)).all()
  • 1

筛选字段:

db_session.query(User.gender, User.name).filter(User.name == 'zs', User.uid == 1).first()
  • 1

别名(不影响数据库):.label()

db_session.query(User.gender.label('xb'), User.name).filter(User.name == 'zs', User.uid == 1).first()
  • 1

排序:order_by() 默认asc(升序),desc(降序)

db_session.query(User).order_by(User.uid.desc).first()
  • 1

between筛选:between()

db_session.query(User).filter(User.uid.between(1, 10)).all()
  • 1

in筛选:in_()

db_session.(User).filter(User.uid.in_([1, 2, 3])).all() 
  • 1

not in筛选:~ 或者 notin_()

db_session.(User).filter(User.uid.notin_([1, 2, 3])).all()
  • 1

文本序列:

from sqlalchemy.sql import text

res = db_session.query(User).filter(text('id<value and name=:name')).params(value=4, name='lisi')
  • 1
  • 2
  • 3

聚合:

from sqlalchemy.sql import func
db_session.query(func.count(user.gender).label('count'), User.gender).group_by(User.gender).all()
  • 1
  • 2

引用添加:

# synchronize_session = True: 同步提交更新
db_session.query(User).filter(User.id == 3).update({User.anme: User.name + '666'}.synchronize_session=False)
  • 1
  • 2

-end-

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号