将行数据从 csv 导入 postgresql 时无法使用字符串

斯蒂芬桑德

作为练习的一部分,我必须每秒从 csv 中插入一行到我的 postgres 数据库中。只要我的行都不包含字符串,一切都可以正常工作。我想知道如何在将变量添加到我的 INSERT 语句时让我的字符串只有 ' '。

with open(file_path, newline='') as csvfile:
  reader = csv.reader(csvfile)
  next(csvfile)
  for row in reader:
    print(row)
    cursor.execute("INSERT INTO %s (%s) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)" % (tbl_name, cols, row[0], row[1], row[2], row[3], row[4],row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15]))
    time.sleep(1)

提前致谢

塞尔吉·巴列斯塔

您永远不应该构建包含作为完整字符串 (*) 的值的查询,而应使用参数化查询

cursor.execute("INSERT INTO %s (%s) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
    % (tbl_name, cols), row[:15]))

但是有些引擎不喜欢?,在这种情况下,您可以使用%s

cursor.execute("INSERT INTO %s (%s) VALUES (%%s,%%s,%%s,%%s,%%s,%%s,%%s,%%s,%%s,%%s,%%s,%%s,%%s,%%s,%%s)"
    % (tbl_name, cols), row[:15]))

这种模式已被弃用多年,因为它是SQL 注入攻击的原因......

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Python将CSV数据导入PostgreSQL

当我使用`sequel`将数据从csv文件导入到postgresql中时出现错误

在 PostgreSQL 中使用分隔符制表导入 CSV 数据

将CSV导入Blender时出现“无法将字符串转换为浮点”

使用.csv将数据导入PostgreSQL时出现问题(csv中大于5万行)

使用R将多个csv文件导入到postgresql数据库中(内存错误)

从csv导入数据后的Postgresql更新顺序

将csv导入MySQL数据库时,格式字符串的参数不足

将csv导入PANDAS时,如何仅导入其中包含指定字符串的列?

使用python将数据从CSV导入MySQL

从CSV导入PostgreSQL数据库时,能否将Unix时间戳自动转换为TIMESTAMP列?

尝试将csv文件导入postgresql时出现“最后一个预期列之后的额外数据”

使用Powershell导入CSV时尝试匹配字符串

使用特定的行分隔符将 csv 文件导入 postgresql

将CSV导入转换为字符串

将.csv文件中的字符串值导入MATLAB

从CSV数据导入到Postgresql中,无需复制

将包含大量列的大 csv 导入 postgreSQL

如何将包含 JSON 的 CSV 文件导入 postgresql?

PostgreSQL \copy from ... with CSV null as '' 仍然导入空字符串而不是 NULL

将 XML 数据导入 PostgreSQL

无法使用mongoimport将CSV数据导入mongoDB

如何通过Java代码将CSV文件数据导入到PostgreSQL表中?

试图通过python3将csv文件导入postgresql数据库

将.csv数据导入矩阵

将csv导入python数据框时排除列

将 csv 文件导入 panda 数据框时出错

将 csv 导入 pyspark 数据帧时出错

将一行 CSV 导入多行数据网格视图