首页 > 解决方案 > 从 Flask-Sql Alchemy 将 JSON 插入 postgresql

问题描述

我想从烧瓶中将 JSON 类型的数据插入 PostgreSQL 数据库

例如: {"a":[1,2,3] , "b":[1,2,3]}

此类数据的一个示例是 Phone.no 和 Childrens,一个人可以有多个 ph.no 和 Childrens

在烧瓶视图中


@app.route('/add', methods=['POST']) 
def addRex(): 
Name = request.form[‘name’] 
data = request.get_json(force=False, silent=False, cache=True)
p = Projects(name=name,data = data) 
db.session.add(p) 
db.session.commit()

在 HTTP post 方法中

def addData(): 
name = input ('Enter Name :') 
data = input('Enter Data :') 
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
r = requests.post(localhost:5000/add, 
data ={'name':name}, json={'data':data}) 
if (r.status_code == 200):print(' Added Successfully!!') else:print('Already exists!') 

如何将此类数据从烧瓶插入到 postgresql 中。

如果有人可以帮助我解决我的问题。

提前致谢

标签: postgresqlflaskflask-sqlalchemypostgresql-json

解决方案


从 sqlalchemy 方言中,您可以为 Postgres 选择 JSON。这是一个例子,

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.dialects.postgresql import JSON

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres://username:password@localhost:5432/db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

db = SQLAlchemy(app)


class Person(db.Model):
    person_name = db.Column(db.Text, primary_key=True)
    details = db.Column(JSON)


# db.create_all() ==> for creating the db

per_1 = Person(person_name='Batman', details={"phone_no": [5, 6, 7, 8, 9], "children": {"son": [
               "Dick Grayson", "Jason Todd", "Damian Wayne", "Tim Drake"], "daughter": ['Helena Wayne']}})
db.session.add(per_1)
db.session.commit()

推荐阅读