将带有“重音符号”的字符串传递给psycopg

时间:2014-08-19 14:55:32

标签: python postgresql unicode

我正在尝试创建一个脚本,每天将一些文件上传到我们的Postgres数据库。

我创建了一个python脚本,它读取给定目录中的所有.csv文件:

# -*- coding: utf-8 -*-

import os
import psycopg2

connect_string = "dbname='db' user='postgres' host='localhost' password='########"
conn = psycopg2.connect(connect_string)
cur = conn.cursor()

folder = u"SomePathOnTheServer\\Dépôt Chronos"

os.chdir(folder)

listFiles = os.listdir(".")

for files in listFiles:
    if files.startswith("[Prefix]"):
        if files.endswith(".csv"):
            full_path = os.path.join(folder, files)
            print full_path
            cur.execute(u"""SET client_encoding to 'latin1';
                           COPY sde.assignation_train FROM '%s' DELIMITER ';' CSV HEADER;""" %(full_path))

cur.close()

print "All good!"

问题是该文件夹有一些重音:“/DépôtChronos”。我无法更改,因为文件夹是自动生成的(我只对文件夹有“读取”权限)。

enter image description here

当我打印完整路径时,所有字符(以绿色标记)都是正确的。但似乎传递给我的“cur.execute”的路径不是。我尝试在我的字符串之前添加一个“”“”“”以将其作为unicode传递,但它不起作用。

知道什么是错的吗?

感谢!!!

0 个答案:

没有答案