Python 如果我没有';我没有所有的价值观
我在Python中使用Psycopg2,以便将数据插入到PostgreSQL摘要表中。我试图插入的数据是从数百个CSV文件中获取的数据。我知道如何获取我需要的数据,而且我已经有了这样做的代码。问题是,在某些CSV文件中,某些值不存在 例如: 文件#1: 文件#2: 在本例中,我使用字典以便稍后将数据插入表中。 首先我有一个创建字典的函数。在本例中,第一个字典如下所示:Python 如果我没有';我没有所有的价值观,python,sql,postgresql,psycopg2,Python,Sql,Postgresql,Psycopg2,我在Python中使用Psycopg2,以便将数据插入到PostgreSQL摘要表中。我试图插入的数据是从数百个CSV文件中获取的数据。我知道如何获取我需要的数据,而且我已经有了这样做的代码。问题是,在某些CSV文件中,某些值不存在 例如: 文件#1: 文件#2: 在本例中,我使用字典以便稍后将数据插入表中。 首先我有一个创建字典的函数。在本例中,第一个字典如下所示: {'XBT':1,'ABC':2,'ABD':3} {'ABC':4,'ABD':5} INSERT INTO summa
{'XBT':1,'ABC':2,'ABD':3}
{'ABC':4,'ABD':5}
INSERT INTO
summary(XBT,ABC,ABD)
VALUES (%s, %s, %s)
第二个是这样的:
{'XBT':1,'ABC':2,'ABD':3}
{'ABC':4,'ABD':5}
INSERT INTO
summary(XBT,ABC,ABD)
VALUES (%s, %s, %s)
问题将出现在INSERT INTO命令上。我有一个将数据插入表的函数,如下所示:
{'XBT':1,'ABC':2,'ABD':3}
{'ABC':4,'ABD':5}
INSERT INTO
summary(XBT,ABC,ABD)
VALUES (%s, %s, %s)
当循环尝试遍历第二个文件时,我将得到一个错误,因为字典没有'XBT'值。
我正在寻找的解决方案是,如果字典缺少一个值,INSERT INTO函数仍然会向表中添加一个新行,而这将没有缺少的值。不可能为每个场景创建插入函数,因为有100多个变量。简单的解决方案是将字典中的键转换为
%s
,并在执行过程中生成字符串,同时生成相应的数组。然后您可以组合所有内容并执行该语句
key_str = ''
val_string = ''
key_arr = []
val_arr = []
for key, value in your_dict.iteritems():
key_str += "%s,"
val_str += "%s,"
key_arr.append(key)
val_arr.append(value)
# Then do some string manipulation
command = "INSERT INTO summary({keys}) VALUES ({values})".format(keys=key_str[:1], values = val_str[:1])
# and combine your arrays
substitutions = key_arr + val_arr
# Then execute the command
cursor.execute(command, substitutions)
# Continue with whatever you were going for.