【问题标题】:How to insert JSONB into Postgresql with Python?如何使用 Python 将 JSONB 插入 Postgresql?
【发布时间】:2017-09-23 16:22:17
【问题描述】:

我是 python 和 postgresql 的新手

我一直在努力用 python 对每个 json 行进行硬编码,我认为这不是可扩展的方法。如果有人可以指出我可以处理从 python 插入 json 而无需硬编码的文献或文档。

我已经查看了 COPY。

【问题讨论】:

    标签: python json postgresql psycopg2 jsonb


    【解决方案1】:
    import json
    
    data = [1, [2,3], {'a': [4,5]}]
    my_json = json.dumps(data)
    insert_query = "insert into t (j) values (%s) returning j"
    cursor.execute(insert_query, (my_json,))
    print (cursor.fetchone()[0])
    

    输出:

    [1, [2, 3], {'a': [4, 5]}]
    

    【讨论】:

    • 像魅力一样工作!并且不要忘记conn.autocommit = Trueconn.commit 在数据库中查看实际结果。
    【解决方案2】:

    使用数据集 + psycopg2

    import dataset
    
    def construct_pg_url(postgres_user='postgres', postgres_password='', postgres_host='localhost', postgres_port='5432', postgres_database='postgres'):
        PG_URL = "postgresql://" + postgres_user + ":" + postgres_password + '@' + postgres_host + ':' + postgres_port + '/' + postgres_database
        return PG_URL
    
    pgconn = dataset.Database(
                 url=construct_pg_url(),
                 schema='my_schema'
    )
    table = pgconn['my_table']
    rows = [dict(foo='bar', baz='foo')] * 10000
    table.insert_many(rows)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-24
      • 1970-01-01
      • 2018-12-10
      • 2020-06-28
      • 2022-11-02
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多