You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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()

补充说明

  1. 运行代码前请确保已安装依赖:pip install flask flask-sqlalchemy psycopg2-binary(psycopg2-binary是PostgreSQL的Python驱动)
  2. 确认PostgreSQL服务已启动,且test数据库和test_table表已存在
  3. 将连接字符串中的username和password替换为你的PostgreSQL实际账号密码

内容的提问来源于stack exchange,提问作者ahjfoışsjhofeşsfn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 22:45:11