栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

sqlalchemy的基本使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

sqlalchemy的基本使用

依赖
pip install sqlalchemy
基本使用
from sqlalchemy.orm import Session, sessionmaker, declarative_base
from sqlalchemy import create_engine, Column, Integer, String

# 1.创建引擎
engine = create_engine('mysql+pymysql://root:1234@localhost/sqlalchemy_test')

# 2.创建会话
# 2.1 基本创建方式
# s = Session(bind=engine)

# 2.2 通过sessionmaker创建,本质上还是Session,只是可自定义配置强
# Session = sessionmaker(bind=engine)
# s = Session()

# 2.3 通过scoped_session创建, 传入一个session工厂
Session =scoped_session(sessionmaker(bind=engine))
s = Session()


# 3.创建ORM映射基类
Base = declarative_base()


# 4.创建数据表
class User(Base):
    __tablename__ = 'user_account'
    id = Column(Integer, primary_key=True)
    name = Column(String(25))

    def __repr__(self):
        return f'User(id={self.id}, name={self.name})'


# 5.不存在则创建,存在则不创建
Base.metadata.create_all(engine)

# 6.实例化一个Use对象
# user = User(name='chatu')

# 7.将User对象添加到Session中
s.add(user)
# 8.提交到数据库
s.commit()
# 9.关闭session对象
s.close()

更多数据库操作
from add import s, User, engine  # 这边导入的是上方定义的
from sqlalchemy import select, table, update, insert, delete, create_engine, column

# result = s.query(User).all()
# print(result)

# s.scalars()执行语句,并返回一个个实例对象
# 可以通过select这种原生的,然后去执行
# 也可以通过session.query去筛选
# s.execute()可以执行增删改查


# ##### 接近原生的sqlalchemy查询
print(type(select(User)))
# 查找
sel = select(User).where(User.name == 'chatu1')
print(type(select(User).where(User.name == 'chatu1')))
result = s.execute(sel)
print(result, '=============', type(result))
for i in result:
    print(i)

print('---------------------',s.scalars(sel))
for i in s.scalars(sel):
    print(i)

# 更新
upd = (update(User).
where(User.id == 4).
values(name='chst1122')
)

# 直接通过engine创建的连接则在执行execute的时候就会提交到数据库
# conn = engine.connect()
# conn.execute(upd)

# 通过session执行execute
a = s.execute(upd)  # 执行更新
s.commit()  # 只有提交之后数据库才会更新

# 插入
ins = insert(User).values(name='hello world')
s.execute((ins))
s.commit()

# 删除
delete_data = delete(User).where(column('id') >= 100)
s.execute(delete_data)
s.commit()


###### 使用会话机制查询

# 查询
filter_query = s.query(User).filter(User.name=='chatu1').all()  # 返回一个列表,包含所有筛选对象
# filter_query = s.query(User).filter(User.name.in_(['chatu2'])).all()  # 返回一个列表,包含所有筛选对象
print(filter_query)

# 修改
update_filter = s.query(User).filter(User.name=='chatu1').update({'name':'chatu11'})
s.commit()

# 添加
user = User(name='hello chatu')
s.add(user)
s.commit()

# 删除
s.query(User).filter(User.name=='chst1122').delete()
s.commit()


附录

1.链接:Session、sessionmaker、scoped_session相关资料
2.接近原生的sqlalchemy操作
链接-查询:sqlalchemy-查询
链接-更新,插入,删除:sqlalchemy-更新,插入,删除
3.会话通过query操作数据库的操作
会话的query查询:query操作API

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992103.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号