如何用SQLAlchemy将JSON指定键值写入PostgreSQL对应表列
问题解决:将JSON数据写入PostgreSQL表
你需要把result.json中的title和score字段写入PostgreSQL的test数据库下test_table表的对应列,现有代码存在几处错误,以下是修正后的完整代码及修改说明:
原代码的问题点
- 未初始化Flask应用实例,直接调用
app.config会抛出异常 - 模型类继承错误,应为
db.Model而非test.Model - 缺少
json模块导入,无法读取JSON文件 - 创建模型实例时使用了不存在的字段名(
app_name、developer),与表结构定义的title、score不匹配 - 数据库连接字符串中的
username和password需替换为实际的数据库账号密码
修正后的代码
from flask import Flask from flask_sqlalchemy import SQLAlchemy import json # 导入json模块用于读取JSON文件 # 初始化Flask应用 app = Flask(__name__) # 配置数据库连接,替换username和password为实际账号密码 app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres://username:password@localhost:5432/test' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # 建议设为False,关闭不必要的修改追踪 # 初始化SQLAlchemy db = SQLAlchemy(app) # 定义模型,对应test_table表 class Test(db.Model): __tablename__ = 'test_table' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(255)) score = db.Column(db.Float) # 读取JSON文件并写入数据库 with app.app_context(): # Flask应用上下文,确保SQLAlchemy能正常工作 with open('./result.json', 'r', encoding='utf-8') as my_file: dicts = json.load(my_file) for dictionary in dicts: # 使用模型定义的字段名创建实例 test_data = Test(title=dictionary['title'], score=dictionary['score']) db.session.add(test_data) # 批量提交,比循环内提交更高效 db.session.commit()
补充说明
- 运行代码前请确保已安装依赖:
pip install flask flask-sqlalchemy psycopg2-binary(psycopg2-binary是PostgreSQL的Python驱动) - 确认PostgreSQL服务已启动,且
test数据库和test_table表已存在 - 将连接字符串中的
username和password替换为你的PostgreSQL实际账号密码
内容的提问来源于stack exchange,提问作者ahjfoışsjhofeşsfn
相关产品推荐
相关产品推荐

