使用列表使用psycoyg2 python输入数据(缺少数据)
希望将cvs中缺少值的数据获取到postgresql中。我很乐意使用字符串插入。我想要一个快速的是这样做使用列表或类似的东西。我还需要检查缺少的值,并在其他方面出现错误时进行替换使用列表使用psycoyg2 python输入数据(缺少数据),python,psycopg2,Python,Psycopg2,希望将cvs中缺少值的数据获取到postgresql中。我很乐意使用字符串插入。我想要一个快速的是这样做使用列表或类似的东西。我还需要检查缺少的值,并在其他方面出现错误时进行替换 for w in csvReader: if a ==0: var = w sql_table = 'CREATE TABLE TableName (%s)' % ','.join('%s VARCHAR(50)' % name for name in var)
for w in csvReader:
if a ==0:
var = w
sql_table = 'CREATE TABLE TableName (%s)' % ','.join('%s VARCHAR(50)' % name for name in var)
dict_cur.execute(sql_table)
else:
colnum = 0
for col in w:
nms= col
print w, 'column'
#this is not correct
sql_insert = ('INSERT INTO TableName (%s) VALUES (%s)' % (','.join('%s' % name for name in var),','.join('%s' % nm for nm in nms)))
cursor.execute(sql_insert)
colnum += 1
print w
a = a + 1
错误
回溯(最近一次呼叫最后一次):
文件“/home/matthew/workspace/dfdsggd/try_db_thing.py”,第41行,在
cursor.execute(sql\U插入)
psycopg2.ProgrammingError:在“”处或附近出现语法错误
第1行:…订单、月、日、年)值(2,6,7,3,5,7)
^查看错误消息,看起来您正试图在数据库中的字段ORDER\u ADM中插入“.”只需从csv中读取,而无需将其置于引号之间
另外,三个文件DAY\u ADM、MONTH\u ADM、YEAR\u ADM建议您可能应该将它们合并到一个日期中,并将它们放在数据库的同一字段中。但这意味着要以某种方式考虑数据库的结构(而不是让一切都变为VARCHAR)。同时在循环中创建读取数据的表,即使是在第一次迭代中也是很不寻常的。如果你想得到一个明确的答案,那么你可以举一些csv和表格结构的例子。是的,我同意循环,但这就是我发现的。因为我不知道确切的数据类型,所以我正在考虑只获取数据,然后在Postgres中更改它。我可以使用regex和autochange读取数据类型。这是一个很好的例子。Psycopg2使事情变得非常困难,因为没有准备好的语句。我知道这只是一个例子。不是吗?我的理解是,Psycopg2没有准备好的声明。Python3和postgres都可以使用,但我不能将Python3用于我正在做的大部分工作。