Как загрузить файл JSON тоже базу данных PSQL - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть файл JSON.Теперь мне нужно загрузить данные JSON в мою базу данных PSQL.

Пока я пробовал это

import psycopg2
import json
with open('new.json') as f:
    data = f.read()
    dd = json.loads(data)
    conn = psycopg2.connect(database="newdb", user = "postgres",  password = "postgres",host = "127.0.0.1", port = "5432")

    print "Opened database successfully"

    cur = conn.cursor()

    cur.execute(''' CREATE TABLE jsontable(SUM INT NOT NULL,
                                      APP  CHAR[30] NOT NULL,
                                      ID INT NOT NULL,
                                      DOMAINNAME TEXT NOT NULL,
                                      DOMAINID INT NOT NULL);''')
    print "Table Created successfully"


    cur.execute('''INSERT INTO jsontable(data)
                   VALUES(%s)
                ''',
                     (data, str(dd['sum'],str(dd['app'],str(dd['id'],str(dd['Domain_name'],str(dd['Domain_Id'])))

print ("Data Entered successfully")
conn.commit()
conn.close()

Пожалуйста, приведите несколько примеров, как передать данные файла JSON в базу данных

1 Ответ

0 голосов
/ 12 декабря 2018

Лично мне нравится asyncpg , поскольку он полностью асинхронный, особенно если вы используете Python 3.x, и, по сути, все, что вам нужно сделать, это поставить await перед командами синхронизации.

import asyncpg
import json
with open('new.json') as f:
    data = f.read()
    dd = json.loads(data)
    conn = await asyncpg.connect(database="newdb", user = "postgres",  password = "postgres",host = "127.0.0.1", port = "5432")    
    print "Opened database successfully"
    await con.execute(''' CREATE TABLE jsontable(SUM INT NOT NULL,
                                      APP  CHAR[30] NOT NULL,
                                      ID INT NOT NULL,
                                      DOMAINNAME TEXT NOT NULL,
                                      DOMAINID INT NOT NULL);''')
    print "Table Created successfully"


    await con.execute('''INSERT INTO jsontable(SUM, APP, ID, DOMAINNAME, DOMAINID)
                   VALUES($1, $2, $3, $4, $5)
                ''',(str(dd['sum'],str(dd['app'],str(dd['id'],str(dd['Domain_name'],str(dd['Domain_Id'])))

print ("Data Entered successfully")
await conn.commit()
await conn.close()
...