gpt4 book ai didi

Python、Postgresql 从 csv 复制时遇到问题

转载 作者:行者123 更新时间:2023-11-29 13:49:20 27 4
gpt4 key购买 nike

我正在做这一切作为测试。我想获取一个包含标题的 csv 文件并将值复制到 postgresql 数据库表中。表列的名称与 csv 文件中的标题相同,区分大小写。表有两列“pkey”、“m”。 csv 仅具有标题的“m”。 pkey 只是自动递增的主键设置。作为测试,我只想将 csv 文件中的“m”列复制到表格中。

import csv
import psycopg2


database = psycopg2.connect ( database = "testing", user="**",
password="**", host="**", port="**")

ocsvf = open("sample.csv")

def merger(conn, table_name, file_object):
cursor = conn.cursor()
cursor.copy_from(file_object, table_name, sep=',', columns=('mls'))
conn.commit()
cursor.close()

try:
merger(database, 'tests', ocsvf)
finally:
database.close()

当我尝试运行代码时,我得到了这个错误

Traceback (most recent call last):
File "csvtest.py", line 26, in <module>
merger(database, 'tests', ocsvf)
File "csvtest.py", line 21, in merger
cursor.copy_from(file_object, table_name, sep=',', columns=('m'))
psycopg2.ProgrammingError: column "m" of relation "tests" does not exist

我确信它很简单,我一直在看,但我也用谷歌搜索了这个,我发现的一件事是有人说它可能是主键设置正确但我测试了它并且主键工作正常我从 pgadmin 手动输入。任何帮助都会非常感谢

最佳答案

在这一行中:

cursor.copy_from(file_object, table_name, sep=',', columns=('mls'))

('mls') 评估为 "mls" 这最终意味着对其进行迭代将产生 3 个项目 ['m','l ',']。你应该这样写这一行:

cursor.copy_from(file_object, table_name, sep=',', columns=('mls',))

表达式 ('mls',) 评估为包含一项的元组:"mls",我想这就是您想要做的。

关于Python、Postgresql 从 csv 复制时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43789935/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com