从 Python 将随机数据存储在 Postgres 数据库中

Posted

技术标签:

【中文标题】从 Python 将随机数据存储在 Postgres 数据库中【英文标题】:Store random data in Postgres database from Python 【发布时间】:2017-02-27 06:05:54 【问题描述】:

我有这种形式的数据:

data='["info": "No", "uid": null, "links": ["";, ""], "task_id": 1, "created": "2017-02 -15T09:07:09.068145", "finish_time": "2017-02-15T09:07:14.620174", "calibration": null, "user_ip": null, "timeout": null, "project_id": 1, "id ": 1]', 'uuid': u'abc:def:ghi'

我想将此数据存储在 Postgres 数据库中。我有这个问题:

    quer1='UPDATE table_1 SET data = "%s" WHERE id = "%s" '%(data1,id)
    db_session.execute(quer1)
    db_session.commit()

这个查询会执行,但不会在数据库中存储任何内容。数据的数据类型是“文本”。我无法指出我错在哪里。请帮忙。

已编辑:: 我将查询更新为:

quer1='UPDATE table_1 SET data = "%s" WHERE hitid = %s '%(data1,id)

【问题讨论】:

id 列的数据类型是什么?您正在使用的id 的值是多少? 你的 data 变量不是一个工作 Python 代码 sn-p。总的来说,这似乎不是一个完整的、最小的例子。 @MattMS id 的数据类型是 varchar。 正如@groteworld 提到的,请使用您用于data 的实际值更新您的问题。 @MattMS 更新 【参考方案1】:

首先,永远不要使用%str.format 将值插入到您的查询中!!!

假设您使用的是 psycopg2,您的查询应使用以下格式:

db_session.execute('UPDATE table_1 SET data = %s WHERE id = %s', (data1, id))

正如@groteworld 所提到的,data = 1,2,'3',[4],(5),6 不是有效的 Python。 我假设您在实际代码中使用了正确的 data 值。

【讨论】:

以上是关于从 Python 将随机数据存储在 Postgres 数据库中的主要内容,如果未能解决你的问题,请参考以下文章

postgre 数据类型--字符类型

postgre数据如何实现Oracle数据库中decode函数

显示随机选择(Python)

从 Python 并行批量读取文件

postgre存储bytea(blob)

postgre存储bytea(blob)