事务管理:确保批量插入或更新操作的原子性。 from sqlalchemy import create_engine engine = create_engine('postgresql://user:pass@localhost/db') with engine.begin() as connection: connection.execute("INSERT INTO users (...) VALUES (...)") connection.execute("UPDATE orders SET ...")
异常捕获:处理JSON格式错误、数据库连接失败等异常。 try: data = json.loads(request_body) except json.JSONDecodeError: return {"error": "无效的JSON格式"}
二、数据查询与更新
1. 查询操作
关系型数据库:
JSON路径查询:使用->或JSON_EXTRACT提取字段。 SELECT profile->>'name' AS name FROM users WHERE id = 1;
条件过滤:结合JSON函数实现复杂查询(如查找年龄大于30的用户)。 SELECT * FROM users WHERE JSON_EXTRACT(profile, '$.age') > 30;
部分更新:仅修改JSON中的特定字段,减少数据传输量。 UPDATE users SET profile = JSON_SET(profile, '$.age', 31) WHERE id = 1;
批量操作:通过ORM框架(如SQLAlchemy)批量提交修改。 users = session.query(User).filter(User.id > 10).all() for user in users: user.profile['status'] = 'active' session.commit()
POST /users创建用户,GET /users/{id}获取详情,PUT /users/{id}更新数据。
分页与过滤:通过查询参数控制返回数据量。 GET /users?page=2&limit=10&age=gt:25
四、性能优化策略
索引优化
为JSON字段中的高频查询键创建虚拟列并索引(PostgreSQL)。 ALTER TABLE users ADD COLUMN age INT GENERATED ALWAYS AS (profile->>'age') STORED; CREATE INDEX idx_age ON users(age);
2. 缓存机制
使用Redis缓存热点数据,减少数据库压力。 import redis r = redis.Redis(host='localhost', port=6379, db=0) r.set('user:1', json.dumps(user_data))