错误预期类型 StringIO,取而代之的是 str

Error expected type StringIO, got str instead

我正在尝试使用 psycopg2 中的 copy_from 函数将数据批量插入到我的 postgres 数据库中。 要使用此功能,我尝试使用 io.StringIO (python 3.x).

将元组列表放入类似文件的对象中
    def __insert_cpe_dic__(self, cpe_dic):
        sio = StringIO
        sio.write('\n'.join(cpe for cpe in cpe_dic))
        sio.seek(0)
        self.cur.copy_from(sio, "cpe_dictionary")

我收到错误:'expected type StringIO, got str instead ...' 写入 'sio' 变量时。 我找不到我的问题的任何答案,希望有人有想法。

您在 sio = StringIO 时分配了 class 而不是 class 的实例。您需要添加括号来实例化 class: sio = StringIO() 的实例。此外,您不需要显式生成器,只需执行 sio.write('\n'.join(cpe_dic)) 就会产生相同的结果。