使用Python Requests提交字典列表至API未写入数据库问题
排查数据未写入数据库的可能原因
确认请求的基础状态
先打印请求状态码和响应内容:print(x.status_code) print(x.text) # 或 print(x.json()) 如果响应是JSON格式非200/201这类成功状态码(比如400参数错误、401未授权、500服务器内部错误)直接说明请求未被服务器正确处理,响应内容里通常会包含具体错误信息。
核对API接口要求
- 确认接口是否支持
POST方法,部分接口可能要求PUT或其他请求方式; - 检查是否需要额外请求头,比如认证令牌
Authorization,虽然requests.post(json=...)会自动设置Content-Type: application/json,但有些服务器可能需要其他自定义头; - 对照API文档验证数据结构:字段名是否完全匹配(比如
kl是否是服务器要求的字段名)、嵌套层级是否正确、日期格式是否符合服务器预期(比如服务器可能需要YYYY-MM-DD而非DD-MM-YYYY)。
- 确认接口是否支持
验证数据合法性
检查数据是否违反数据库约束:比如name字段是否为空(当前示例有值,但需确认批量数据中是否存在空值)、日期格式能否被数据库解析、是否存在重复的唯一键(若kl是数据库唯一字段)。排查认证权限问题
若API需要认证,未携带凭证会导致服务器拒绝写入。尝试添加认证信息,比如:headers = {'Authorization': 'Bearer YOUR_AUTH_TOKEN'} x = requests.post(url, json=my_data, headers=headers)查看服务器端日志
若能访问服务器日志,直接查看日志中的错误详情,比如SQL执行报错、参数校验失败等,这是最直接的排查途径。测试简化数据
先提交单个简化条目验证:test_data = [{'kl': 'test', 'schemas': [{'date': '2022-12-14', 'name': 'test_entry'}]}] x = requests.post(url, json=test_data)确认单条数据能否写入,逐步排查是批量提交还是数据结构的问题。
内容的提问来源于stack exchange,提问作者Pathia Nanto
相关产品推荐
相关产品推荐

