“/”处或附近的psycopg2模块语法错误

2024-06-26 13:59:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想通过psycopg2将csv文件导入PostgreSQL。但是,csv文件列名包含特殊字符。我可以用这些代码行通过psycopg2创建一个表

cursor.execute('''CREATE TABLE crimnalRate(CrimeDate DATE, 
                                        CrimeTime TIME,
                                        CrimeCode TEXT,
                                        Location TEXT,
                                        Description TEXT,
                                        "Inside/Outside" TEXT,
                                        Weapon Text,
                                        Post INT,
                                        District TEXT,
                                        Neighborhood TEXT,
                                        Longitude DOUBLE PRECISION,
                                        Latitude DOUBLE PRECISION,
                                        "Location 1" TEXT,
                                        Premise TEXT,
                                        vri_name1 TEXT,
                                        "Total Incidents" INT)''')

当我想使用copy_from功能导入带有这些代码行的csv文件时

df=open('BD1.csv','r')
cursor.copy_from(df,"crimnalRate", columns=('CrimeDate',
                                        'CrimeTime',
                                        'CrimeCode',
                                        'Location',
                                        'Description',
                                        'Inside/Outside',
                                        'Weapon',
                                        'Post',
                                        'District',
                                        'Neighborhood',
                                        'Longitude',
                                        'Latitude',
                                        'Location 1',
                                        'Premise',
                                        'vri_name1',
                                        'Total Incidents'),sep=",")

并且它总是返回errorpsycopg2.errors.SyntaxError:SyntaxError位于或接近“/”

我尝试在特殊字符之前使用反斜杠,或者将特殊列名放在双引号中,但它仍然返回相同的错误消息。 如何修复此错误?谁能给我一些建议吗?多谢各位


Tags: 文件csv代码textlocationdescriptioncursorpsycopg2
1条回答
网友
1楼 · 发布于 2024-06-26 13:59:16

这对我很有用:

import io, sys, psycopg2
conn = psycopg2.connect(dbname='sweden')
c = conn.cursor()
c.execute('CREATE TEMPORARY TABLE t("x/y" INTEGER)')
f = io.StringIO('4711')
c.copy_from(f, 't', columns=['"x/y"'])
c.execute('SELECT * FROM t')
print(list(c))

也就是说,在“有趣”的列名中包含明确的双引号。恕我直言,你不得不这么做有点难看,但是再一次,文档明确表示表名需要这样做,所以列的工作方式是一样的

相关问题 更多 >