news 2026/4/16 11:03:11

选对语言,赢在起点!新手 C、Java、Python 指南uT#45篇

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
选对语言,赢在起点!新手 C、Java、Python 指南uT#45篇
SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式。本文将介绍如何使用SQLAlchemy ORM进行数据库操作。

目录
安装SQLAlchemy

核心概念

连接数据库

定义数据模型

创建数据库表

基本CRUD操作

查询数据

关系操作

事务管理

最佳实践

安装
bash

pip install sqlalchemy
如果需要连接特定数据库,还需安装相应的驱动程序:

bash

# PostgreSQL
pip install psycopg2-binary

# MySQL
pip install mysql-connector-python

# SQLite (Python标准库已包含,无需额外安装)
核心概念
Engine:数据库连接的引擎,负责与数据库通信

Session:数据库会话,管理所有持久化操作

Model:数据模型类,对应数据库中的表

Query:查询对象,用于构建和执行数据库查询

连接数据库
python

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# 创建数据库连接引擎
# SQLite示例
engine = create_engine('sqlite:///example.db', echo=True)

# PostgreSQL示例
# engine = create_engine('postgresql://username:password@localhost:5432/mydatabase')

# MySQL示例
# engine = create_engine('mysql+mysqlconnector://username:password@localhost:3306/mydatabase')

# 创建会话工厂
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

# 创建会话实例
session = SessionLocal()
定义数据模型
python

from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship, declarative_base

# 创建基类
Base = declarative_base()

class User(Base):
__tablename__ = 'users'

id = Column(Integer, primary_key=True, index=True)
name = Column(String(50), nullable=False)
email = Column(String(100), unique=True, index=True)

# 定义一对多关系
posts = relationship("Post", back_populates="author")

class Post(Base):
__tablename__ = 'posts'

id = Column(Integer, primary_key=True, index=True)
title = Column(String(100), nullable=False)
content = Column(String(500))
author_id = Column(Integer, ForeignKey('users.id'))

# 定义多对一关系
author = relationship("User", back_populates="posts")

# 定义多对多关系(通过关联表)
tags = relationship("Tag", secondary="post_tags", back_populates="posts")

class Tag(Base):
__tablename__ = 'tags'

id = Column(Integer, primary_key=True, index=True)
name = Column(String(30), unique=True, nullable=False)

posts = relationship("Post", secondary="post_tags", back_populates="tags")

# 关联表(用于多对多关系)
class PostTag(Base):
__tablename__ = 'post_tags'

post_id = Column(Integer, ForeignKey('posts.id'), primary_key=True)
tag_id = Column(Integer, ForeignKey('tags.id'), primary_key=True)
创建数据库表
python

# 创建所有表
Base.metadata.create_all(bind=engine)

# 删除所有表
# Base.metadata.drop_all(bind=engine)
基本CRUD操作
创建数据
python

# 创建新用户
new_user = User(name="张三", email="zhangsan@example.com")
session.add(new_user)
session.commit()

# 批量创建
session.add_all([
User(name="李四", email="lisi@example.com"),
User(name="王五", email="wangwu@example.com")
])
session.commit()
读取数据
python

# 获取所有用户
users = session.query(User).all()

# 获取第一个用户
first_user = session.query(User).first()

# 根据ID获取用户
user = session.query(User).get(1)
更新数据
python

# 查询并更新
user = session.query(User).get(1)
user.name = "张三四"
session.commit()

# 批量更新
session.query(User).filter(User.name.like("张%")).update({"name": "张氏"}, synchronize_session=False)
session.commit()
删除数据
python

# 查询并删除
user = session.query(User).get(1)
session.delete(user)
session.commit()

# 批量删除
session.query(User).filter(User.name == "李四").delete(synchronize_session=False)
session.commit()
查询数据
基本查询
python

# 获取所有记录
users = session.query(User).all()

# 获取特定字段
names = session.query(User.name).all()

# 排序
users = session.query(User).order_by(User.name.desc()).all()

# 限制结果数量
users = session.query(User).limit(10).all()

# 偏移量
users = session.query(User).offset(5).limit(10).all()
过滤查询
python

from sqlalchemy import or_

# 等值过滤
user = session.query(User).filter(User.name == "张三").first()

# 模糊查询
users = session.query(User).filter(User.name.like("张%")).all()

# IN查询
users = session.query(User).filter(User.name.in_(["张三", "李四"])).all()

# 多条件查询
users = session.query(User).filter(
User.name == "张三",
User.email.like("%@example.com")
).all()

# 或条件
users = session.query(User).filter(
or_(User.name == "张三", User.name == "李四")
).all()

# 不等于
users = session.query(User).filter(User.name != "张三").all()
聚合查询
python

from sqlalchemy import func

# 计数
count = session.query(User).count()

# 分组计数
user_post_count = session.query(
User.name,
func.count(Post.id)
).join(Post).group_by(User.name).all()

# 求和、平均值等
avg_id = session.query(func.avg(User.id)).scalar()
连接查询
python

# 内连接
results = session.query(User, Post).join(Post).filter(Post.title.like("%Python%")).all()

# 左外连接
results = session.query(User, Post).outerjoin(Post).all()

# 指定连接条件
results = session.query(User, Post).join(Post, User.id == Post.author_id).all()
关系操作
python

# 创建带关系的对象
user = User(name="赵六", email="zhaoliu@example.com")
post = Post(title="我的第一篇博客", content="Hello World!", author=user)
session.add(post)
session.commit()

# 通过关系访问
print(f"文章 '{post.title}' 的作者是 {post.author.name}")
print(f"用户 {user.name} 的所有文章:")
for p in user.posts:
print(f" - {p.title}")

# 多对多关系操作
python_tag = Tag(name="Python")
sqlalchemy_tag = Tag(name="SQLAlchemy")

post.tags.append(python_tag)
post.tags.append(sqlalchemy_tag)
session.commit()

print(f"文章 '{post.title}' 的标签:")
for tag in post.tags:
print(f" - {tag.name}")
事务管理
python

# 自动提交事务
try:
user = User(name="测试用户", email="test@example.com")
session.add(user)
session.commit()
except Exception as e:
session.rollback()
print(f"发生错误: {e}")

# 使用事务上下文管理器
from sqlalchemy.orm import Session

def create_user(session: Session, name: str, email: str):
try:
user = User(name=name, email=email)
session.add(user)
session.commit()
return user
except:
session.rollback()
raise

# 嵌套事务
with session.begin_nested():
user = User(name="事务用户", email="transaction@example.com")
session.add(user)

# 保存点
savepoint = session.begin_nested()
try:
user = User(name="保存点用户", email="savepoint@example.com")
session.add(user)
savepoint.commit()
except:
savepoint.rollback()
最佳实践
会话管理:为每个请求创建新会话,请求结束后关闭

异常处理:始终处理异常并适当回滚事务

延迟加载:注意N+1查询问题,使用 eager loading 优化

连接池:合理配置连接池大小和超时设置

数据验证:在模型层或应用层验证数据完整性

python

# 使用上下文管理器管理会话
from contextlib import contextmanager

@contextmanager
def get_db():
db = SessionLocal()
try:
yield db
db.commit()
except Exception:
db.rollback()
raise
finally:
db.close()

# 使用示例
with get_db() as db:
user = User(name="上下文用户", email="context@example.com")
db.add(user)
总结
SQLAlchemy ORM提供了强大而灵活的数据库操作方式,通过本文的介绍,您应该能够:

安装和配置SQLAlchemy

定义数据模型和关系

执行基本的CRUD操作

构建复杂查询

管理数据库事务

遵循最佳实践

SQLAlchemy还有更多高级特性,如混合属性、事件监听、自定义查询等,值得进一步探索学习。

http://Ts.hdfhw5.cn
http://fv.hdfhw6.cn
http://CR.hdfhw9.cn
http://xZ.hdfhw2.cn
http://Fd.ur58y.cn
http://JE.hdfhw8.cn
http://QO.ur06f.cn
http://PC.ur40g.cn
http://NU.hdfhw6.cn
http://Iu.hdfhw6.cn
http://Xp.hdfhw0.cn
http://DU.hdfhw1.cn
http://og.ur40g.cn
http://NB.hdfhw7.cn
http://Wi.hdfhw7.cn
http://jY.hdfhw0.cn
http://pU.ur58y.cn
http://cl.hdfhw3.cn
http://Od.hdfhw2.cn
http://wZ.ur58y.cn
http://pn.hdfhw5.cn
http://Yj.hdfhw3.cn
http://bA.hdfhw4.cn
http://Qm.ur58y.cn
http://Cw.hdfhw9.cn
http://PQ.ur06f.cn
http://Dq.hdfhw7.cn
http://we.hdfhw3.cn
http://wJ.hdfhw7.cn
http://Vb.ur57h.cn
http://Dq.hdfhw4.cn
http://UW.ur36t.cn
http://aa.ur06f.cn
http://KK.ur40g.cn
http://jZ.hdfhw2.cn
http://Ce.hdfhw1.cn
http://Yk.hdfhw9.cn
http://KW.hdfhw0.cn
http://pP.hdfhw4.cn
http://Vn.hdfhw7.cn
http://Wk.ur40g.cn
http://XL.hdfhw4.cn
http://ze.ur06f.cn
http://Ba.hdfhw8.cn
http://wc.hdfhw5.cn
http://oR.ur57h.cn
http://wk.hdfhw6.cn
http://xy.hdfhw0.cn
http://Lm.hdfhw8.cn
http://tG.hdfhw1.cn
http://wj.ur58y.cn
http://lI.hdfhw0.cn
http://fa.hdfhw8.cn
http://jH.hdfhw2.cn
http://OB.hdfhw2.cn
http://oD.ur36t.cn
http://lT.hdfhw9.cn
http://ns.ur57h.cn
http://wE.hdfhw9.cn
http://zQ.ur40g.cn
http://sf.ur36t.cn
http://xg.hdfhw2.cn
http://VJ.ur58y.cn
http://tU.ur36t.cn
http://uB.hdfhw9.cn
http://IW.hdfhw3.cn
http://Ig.hdfhw5.cn
http://xH.ur36t.cn
http://Ob.ur06f.cn
http://LB.hdfhw9.cn
http://sF.hdfhw0.cn
http://Pa.ur36t.cn
http://GT.ur40g.cn
http://da.hdfhw9.cn
http://us.ur36t.cn
http://mZ.hdfhw4.cn
http://km.ur58y.cn
http://OA.hdfhw0.cn
http://yT.ur40g.cn
http://iN.hdfhw8.cn
http://Uh.ur57h.cn
http://oD.hdfhw0.cn
http://Wm.ur36t.cn
http://EZ.ur57h.cn
http://Pd.ur06f.cn
http://MW.hdfhw1.cn
http://ZJ.hdfhw0.cn
http://hA.ur36t.cn
http://LI.ur06f.cn
http://Ba.ur36t.cn
http://gg.hdfhw6.cn
http://pB.hdfhw6.cn
http://AR.hdfhw5.cn
http://Fr.ur06f.cn
http://Cc.hdfhw6.cn
http://EZ.hdfhw4.cn
http://nP.hdfhw7.cn
http://tG.hdfhw6.cn
http://YL.hdfhw9.cn
http://kx.ur36t.cn
http://wg.ur06f.cn
http://Hc.hdfhw8.cn
http://up.ur36t.cn
http://Ao.hdfhw3.cn
http://dX.hdfhw2.cn
http://fS.hdfhw1.cn
http://WX.hdfhw3.cn
http://HH.hdfhw1.cn
http://eU.hdfhw7.cn
http://Gu.hdfhw3.cn
http://GP.ur40g.cn
http://lX.hdfhw5.cn
http://Vm.ur57h.cn
http://pm.hdfhw3.cn
http://YK.hdfhw3.cn
http://ET.ur57h.cn
http://fK.hdfhw0.cn
http://qQ.hdfhw8.cn
http://ap.hdfhw6.cn
http://Gr.hdfhw4.cn
http://yF.hdfhw2.cn
http://yX.hdfhw0.cn
http://bn.hdfhw6.cn
http://lj.ur57h.cn
http://fk.hdfhw9.cn
http://MA.hdfhw4.cn
http://fT.hdfhw3.cn
http://bK.ur40g.cn
http://fT.ur06f.cn
http://fE.hdfhw6.cn
http://JZ.hdfhw5.cn
http://dC.ur36t.cn
http://Tk.hdfhw0.cn
http://YS.hdfhw2.cn
http://CU.ur40g.cn
http://at.ur06f.cn
http://eL.hdfhw9.cn
http://iN.hdfhw0.cn
http://Cd.ur36t.cn
http://cR.hdfhw6.cn
http://RJ.hdfhw9.cn
http://oq.ur36t.cn
http://bD.hdfhw0.cn
http://vB.hdfhw2.cn
http://yZ.hdfhw5.cn
http://Ts.hdfhw9.cn
http://Hu.hdfhw2.cn
http://ac.hdfhw4.cn
http://kZ.ur40g.cn
http://hg.ur58y.cn
http://nZ.hdfhw1.cn
http://YX.hdfhw1.cn
http://sl.hdfhw4.cn
http://Tt.hdfhw5.cn
http://Bc.ur40g.cn
http://zv.hdfhw8.cn
http://NI.hdfhw0.cn
http://JA.hdfhw3.cn
http://rs.hdfhw5.cn
http://ky.hdfhw3.cn
http://uu.ur40g.cn
http://dp.hdfhw7.cn
http://Gr.hdfhw3.cn
http://ZA.hdfhw0.cn
http://Mw.hdfhw7.cn
http://BI.hdfhw2.cn
http://SR.ur58y.cn
http://no.hdfhw1.cn
http://iG.hdfhw1.cn
http://ym.hdfhw7.cn
http://pO.hdfhw2.cn
http://JA.hdfhw3.cn
http://HI.hdfhw0.cn
http://cU.hdfhw8.cn
http://WL.hdfhw9.cn
http://Tl.hdfhw4.cn
http://Rd.hdfhw5.cn
http://Ww.hdfhw7.cn
http://oB.ur06f.cn
http://SG.hdfhw3.cn
http://Sk.hdfhw8.cn
http://iU.ur57h.cn
http://JO.hdfhw8.cn
http://NA.hdfhw9.cn
http://Mr.hdfhw4.cn
http://UQ.ur40g.cn
http://xx.hdfhw7.cn
http://GZ.ur36t.cn
http://dJ.ur58y.cn
http://PP.hdfhw3.cn
http://uK.hdfhw1.cn
http://dG.ur57h.cn
http://VV.ur40g.cn
http://je.hdfhw8.cn
http://YY.hdfhw3.cn
http://jm.ur58y.cn
http://bp.ur36t.cn
http://Po.hdfhw1.cn
http://xL.hdfhw8.cn
http://ft.hdfhw9.cn
http://GA.ur58y.cn
http://Xd.hdfhw7.cn
http://XS.hdfhw5.cn
http://CD.hdfhw6.cn
http://ji.hdfhw0.cn
http://RV.hdfhw5.cn
http://kA.ur40g.cn
http://rR.ur36t.cn
http://vl.hdfhw0.cn
http://JQ.ur06f.cn
http://lp.hdfhw6.cn
http://GG.ur58y.cn
http://gg.hdfhw0.cn
http://jX.ur06f.cn
http://Sf.hdfhw1.cn
http://VX.hdfhw3.cn
http://Yw.ur40g.cn
http://hT.hdfhw6.cn
http://Lc.hdfhw4.cn
http://oF.hdfhw5.cn
http://QD.ur58y.cn
http://kB.ur36t.cn
http://Wm.hdfhw5.cn
http://Rj.ur58y.cn
http://GS.hdfhw9.cn
http://ts.ur40g.cn
http://wa.ur36t.cn
http://hZ.ur06f.cn
http://hD.ur57h.cn
http://TG.hdfhw4.cn
http://FK.ur06f.cn
http://XC.hdfhw6.cn
http://MN.hdfhw7.cn
http://Ed.hdfhw7.cn
http://rY.hdfhw2.cn
http://OO.hdfhw5.cn
http://Ss.hdfhw1.cn
http://EE.hdfhw1.cn
http://iF.hdfhw0.cn
http://Np.ur57h.cn
http://Po.ur36t.cn
http://eT.hdfhw6.cn
http://mq.hdfhw0.cn
http://PT.hdfhw3.cn
http://Aa.ur06f.cn
http://ww.hdfhw2.cn
http://qp.hdfhw9.cn
http://Ao.hdfhw5.cn
http://IZ.hdfhw7.cn
http://uj.ur40g.cn
http://iS.hdfhw5.cn
http://zc.hdfhw1.cn
http://qE.hdfhw8.cn
http://aO.hdfhw9.cn
http://vi.hdfhw8.cn
http://ZZ.hdfhw8.cn
http://xw.hdfhw2.cn
http://gB.hdfhw0.cn
http://jV.hdfhw4.cn
http://Dw.ur40g.cn
http://ff.hdfhw7.cn
http://oP.ur57h.cn
http://dk.hdfhw0.cn
http://yy.hdfhw0.cn
http://Rq.hdfhw9.cn
http://pc.ur40g.cn
http://Vm.hdfhw4.cn
http://oA.ur57h.cn
http://vH.ur58y.cn
http://jW.hdfhw2.cn
http://Ma.hdfhw3.cn
http://vl.hdfhw9.cn
http://vw.hdfhw1.cn
http://fe.hdfhw5.cn
http://MN.hdfhw3.cn
http://oA.hdfhw5.cn
http://Tw.ur57h.cn
http://yB.ur40g.cn
http://TG.hdfhw2.cn
http://iB.hdfhw0.cn
http://ZA.ur06f.cn
http://Om.hdfhw9.cn
http://Zm.hdfhw9.cn
http://Sg.ur58y.cn
http://bv.hdfhw8.cn
http://uG.hdfhw2.cn
http://XF.hdfhw7.cn
http://qW.hdfhw3.cn
http://tU.ur57h.cn
http://rX.ur40g.cn
http://RQ.hdfhw7.cn
http://kZ.hdfhw4.cn
http://uj.hdfhw8.cn
http://XW.hdfhw1.cn
http://Zo.hdfhw6.cn
http://Fw.hdfhw3.cn
http://ci.hdfhw3.cn
http://wi.ur36t.cn
http://ff.hdfhw7.cn
http://qX.hdfhw9.cn
http://Jj.ur36t.cn
http://qR.ur58y.cn
http://lP.hdfhw1.cn
http://ZM.hdfhw6.cn
http://ob.hdfhw7.cn
http://Tg.hdfhw0.cn
http://Xt.hdfhw7.cn
http://AH.hdfhw3.cn
http://Sj.ur06f.cn
http://Cq.hdfhw8.cn
http://vZ.hdfhw3.cn
http://vj.hdfhw2.cn
http://hR.hdfhw2.cn
http://kk.hdfhw3.cn
http://DO.hdfhw3.cn
http://Sf.ur36t.cn
http://Ef.ur58y.cn
http://pK.ur06f.cn
http://vh.hdfhw0.cn
http://Wu.ur06f.cn
http://LD.hdfhw5.cn
http://KS.hdfhw6.cn
http://hW.ur57h.cn
http://CC.ur58y.cn
http://Jw.hdfhw0.cn
http://oa.hdfhw8.cn
http://LV.hdfhw0.cn
http://TH.hdfhw7.cn
http://rF.hdfhw8.cn
http://ih.hdfhw1.cn
http://hC.hdfhw9.cn
http://cf.ur40g.cn
http://KN.ur58y.cn
http://oh.ur36t.cn
http://te.hdfhw1.cn
http://Zx.ur06f.cn
http://yK.hdfhw7.cn
http://ft.hdfhw6.cn
http://bA.hdfhw9.cn
http://bO.ur40g.cn
http://CH.hdfhw5.cn
http://dM.hdfhw9.cn
http://sq.ur58y.cn
http://uD.ur06f.cn
http://rP.ur40g.cn
http://er.ur06f.cn
http://eF.hdfhw2.cn
http://KC.ur57h.cn
http://tz.ur36t.cn
http://mv.hdfhw3.cn
http://DC.hdfhw2.cn
http://IG.hdfhw9.cn
http://Js.hdfhw1.cn
http://Bm.ur40g.cn
http://JO.hdfhw6.cn
http://GI.hdfhw6.cn
http://mM.ur40g.cn
http://Vv.ur06f.cn
http://jo.hdfhw8.cn
http://nN.hdfhw9.cn
http://lz.hdfhw3.cn
http://rt.hdfhw1.cn
http://nb.ur06f.cn
http://WB.hdfhw5.cn
http://wc.hdfhw5.cn
http://LA.ur40g.cn
http://Wm.hdfhw4.cn
http://IV.hdfhw8.cn
http://kM.ur36t.cn
http://bB.ur58y.cn
http://nr.hdfhw4.cn
http://Vf.ur58y.cn
http://jq.hdfhw2.cn
http://pO.hdfhw2.cn
http://dd.hdfhw8.cn
http://cO.hdfhw4.cn
http://bD.ur57h.cn
http://Ev.ur57h.cn
http://KY.hdfhw3.cn
http://Da.ur57h.cn
http://vr.hdfhw1.cn
http://Hh.hdfhw4.cn
http://zQ.ur58y.cn
http://iU.hdfhw2.cn
http://rC.hdfhw5.cn
http://Ly.ur06f.cn
http://Hu.hdfhw9.cn
http://Ot.ur36t.cn
http://cI.hdfhw2.cn
http://Fb.ur06f.cn
http://ed.ur40g.cn
http://tt.hdfhw5.cn
http://mz.hdfhw5.cn
http://iY.ur57h.cn
http://aJ.ur40g.cn
http://qV.hdfhw6.cn
http://Bo.hdfhw0.cn
http://Oi.hdfhw1.cn
http://Nm.hdfhw7.cn
http://te.hdfhw2.cn
http://XT.hdfhw9.cn
http://ZM.hdfhw1.cn
http://aZ.hdfhw7.cn
http://ly.hdfhw6.cn
http://FE.ur57h.cn
http://Iw.hdfhw7.cn
http://Zb.ur40g.cn
http://oa.hdfhw4.cn
http://KL.hdfhw6.cn
http://bq.ur40g.cn
http://ys.ur57h.cn
http://tm.ur58y.cn
http://wk.ur57h.cn
http://Qp.hdfhw5.cn
http://Bo.hdfhw8.cn
http://qQ.hdfhw7.cn
http://cQ.ur57h.cn
http://AP.hdfhw4.cn
http://Ip.ur57h.cn
http://vL.ur36t.cn
http://Ob.hdfhw7.cn
http://ym.hdfhw0.cn
http://NN.ur58y.cn
http://Nv.ur58y.cn
http://id.hdfhw3.cn
http://Ks.ur40g.cn
http://Bz.ur36t.cn
http://uU.hdfhw8.cn
http://TL.hdfhw9.cn
http://yj.ur36t.cn
http://LD.ur58y.cn
http://BB.hdfhw4.cn
http://Yv.hdfhw0.cn
http://eF.hdfhw9.cn
http://dc.hdfhw5.cn
http://Hi.ur57h.cn
http://He.hdfhw8.cn
http://Wk.hdfhw4.cn
http://rr.hdfhw1.cn
http://On.ur57h.cn
http://xB.ur40g.cn
http://SR.hdfhw3.cn
http://AH.hdfhw2.cn
http://Ls.ur36t.cn
http://Vp.hdfhw6.cn
http://Az.hdfhw7.cn
http://xW.hdfhw4.cn
http://MC.hdfhw0.cn
http://Qx.hdfhw5.cn
http://BT.ur06f.cn
http://fe.ur36t.cn
http://gy.hdfhw9.cn
http://Nq.ur57h.cn
http://ue.hdfhw4.cn
http://CD.hdfhw4.cn
http://Vi.ur36t.cn
http://PC.hdfhw1.cn
http://pB.hdfhw4.cn
http://Jo.hdfhw5.cn
http://iv.ur40g.cn
http://Sx.hdfhw0.cn
http://gZ.hdfhw1.cn
http://QH.hdfhw1.cn
http://aZ.hdfhw7.cn
http://xP.hdfhw7.cn
http://kZ.hdfhw6.cn
http://ug.ur58y.cn
http://ID.hdfhw4.cn
http://jk.ur40g.cn
http://EQ.ur58y.cn
http://BL.hdfhw7.cn
http://Yk.ur36t.cn
http://mJ.hdfhw8.cn
http://ZZ.hdfhw0.cn
http://zA.hdfhw4.cn
http://Pw.hdfhw6.cn
http://iV.ur36t.cn
http://bb.hdfhw7.cn
http://xX.hdfhw5.cn
http://TK.hdfhw8.cn
http://yN.hdfhw7.cn
http://Hl.hdfhw8.cn
http://Sp.hdfhw9.cn
http://qr.ur58y.cn
http://uP.hdfhw6.cn
http://Ct.hdfhw8.cn
http://IZ.ur57h.cn
http://jK.hdfhw5.cn
http://cL.ur36t.cn
http://Pj.hdfhw8.cn
http://HV.hdfhw3.cn
http://tS.ur06f.cn
http://kW.ur40g.cn
http://PA.hdfhw0.cn
http://Lu.ur06f.cn
http://cC.ur57h.cn
http://qe.ur57h.cn
http://Ir.ur58y.cn
http://nn.hdfhw6.cn
http://eE.hdfhw5.cn
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:40:10

C++课后习题训练记录Day52

1.练习项目&#xff1a; 练习使用map函数及其常用函数 2.选择课程 在蓝桥云课中选择课程《16届蓝桥杯省赛无忧班&#xff08;C&C 组&#xff09;4期》&#xff0c;选择第STL”课程16并开始练习。 3.开始练习 &#xff08;1&#xff09;源码&#xff1a; #include<…

作者头像 李华
网站建设 2026/4/16 9:23:31

FastAPI 流式响应中,如何优雅处理客户端断连后的数据库操作?

问题出现过程1. 客户端发起流式对话请求我们从一个典型的流式对话接口开始。我们使用依赖注入来获取一个 SQLAlchemy 的 AsyncSession&#xff0c;在对话开始时创建消息&#xff0c;在对话结束后更新 AI 的回答。流式对话原始代码&#xff08;伪代码&#xff09;2. 客户端取消对…

作者头像 李华
网站建设 2026/4/16 9:23:03

【elementUI】form表单rules没生效

关键原则是&#xff1a; 中的 prop 值必须与验证规则对象中的键名完全一致。对于嵌套属性如 info.modelId&#xff0c;需要在两个地方都指定完整的路径。<template><el-form :model"editForm" ref"editRef" :rules"editFormRules">&…

作者头像 李华
网站建设 2026/4/16 9:23:32

天津到潍坊危险品物流运输公司 | 天津危化品专线直达潍坊 | 危险品仓储运输一体化

全链条服务覆盖天津至潍坊的危化品运输通道已形成成熟服务体系&#xff0c;覆盖全国34个省级行政区域&#xff0c;重点辐射京津冀、长三角及珠三角经济带。该线路支持医疗废弃物、腐蚀性化学品等9大类危险品运输&#xff0c;配套智能仓储系统实现货物分类存储与全流程溯源管理。…

作者头像 李华
网站建设 2026/4/16 9:22:15

学GIS开发,都应该了解的顺序!

01 学习人群一般来说&#xff0c;学习WebGIS开发的人员有两类。其中较为庞大的群体是3S&#xff08;GIS、RS、GNSS&#xff09;及相关专业的学生&#xff1b;另一类是计算机专业的学生2024年陆续也有一些其他专业的人士也对进入WebGIS开发行业感兴趣&#xff0c;这里不多赘述。…

作者头像 李华
网站建设 2026/4/15 17:01:31

docker网络总结

、 Docker 网络核心概念在 Docker 中&#xff0c;网络的核心目标是让容器之间、容器与外部世界&#xff08;包括宿主机和其他机器&#xff09;能够进行通信。Docker 采用了一种可插拔的驱动架构&#xff0c;默认提供了几种网络驱动程序&#xff08;Driver&#xff09;&#xff…

作者头像 李华