python - 使用 cursor.mogrify 将元组列表中的行插入数据库会出错

标签 python postgresql psycopg2

我正在尝试使用这个 psycopg2: insert multiple rows with one query 使用 cursor.mogrify 将大量行插入到 postgres 中

数据是一个元组列表,其中每个元组是需要插入的一行。

 cursor = conn.cursor()

    args_str = ','.join(cursor.mogrify("(%s,%s,%s,%s,%s,%s,%s,%s)", x) for x in data)

    cursor.execute(
        "insert into table1 (n, p, r, c, date, p1, a, id) values " + args_str)`

但出现错误:

TypeError: sequence item 0: expected str instance, bytes found

在线:

  args_str = ','.join(cursor.mogrify("(%s,%s,%s,%s,%s,%s,%s,%s)", x) for x in data)

如果我尝试更改为 b''.join(cursor.mogrify("(%s,%s,%s,%s,%s,%s,%s,%s)", x) 对于数据中的 x) , 然后执行查询给出插入字节的错误....

我做错了什么吗?

最佳答案

data = [(1,2),(3,4)]
args_str = ','.join(['%s'] * len(data))
sql = "insert into t (a, b) values {}".format(args_str)
print (cursor.mogrify(sql, data).decode('utf8'))
#cursor.execute(sql, data)

输出:

insert into t (a, b) values (1, 2),(3, 4)

关于python - 使用 cursor.mogrify 将元组列表中的行插入数据库会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41999354/

相关文章:

hibernate - 使用 Hibernate 注释映射 PostgreSQL 串行类型

postgresql - 如何阻止来自Kubernetes中其他 namespace 的到DB Pod和服务(DNS)的流量?

python - 比较python中的日期

python - 使用 monotonically_increasing_id() 将行号分配给 pyspark 数据帧

Python浮点到十进制转换

python - 为 Amazon CloudFront 创建签名 Cookie

ruby-on-rails - 安装pg(0.18.2)时出错,Bundler无法继续

python - Kubernetes部署,如何解决: psycopg2. OperationalError : SCRAM authentication requires libpq version 10 or above?

Python:插入字符串时格式错误的数组文字

python - 鸭子类型(duck typing) : how to avoid name collisions?