使用python 2.7将csv文件加载到mysql中

龙猫

我正在尝试使用 python 将 csv 文件插入到 mysql 中。我只是 mysql 的新程序员,所以我不确定是什么问题。这是我的代码:

file = csv.reader(file('20184329:2143.csv'))
for row in file:
    sql_insert_table = ("""INSERT INTO STAGING(ADRESSE_1600 ,
                        ADRESSE_1601, ADRESSE_1602, ADRESSE_1603)
                        VALUES ('%s', '%d', '%d', '%s')""", row)
    cursor.execute(sql_insert_table)

这是问题所在:

Traceback (most recent call last):
  File "python_loaddata.py", line 22, in <module>
    cursor.execute(sql_insert_table)
  File "/usr/lib/python2.7/site-packages/MySQLdb/cursors.py", line 161, in execute
    self.errorhandler(self, TypeError, m)
  File "/usr/lib/python2.7/site-packages/MySQLdb/connections.py", line 35, in defaulterrorhandler
    raise errorclass, errorvalue
TypeError: must be string or read-only buffer, not tuple
Piquan

您在这里遇到了两个问题,并且接近一个常见的安全漏洞。

看起来您正在尝试使用%-style 替换来创建插入语句。我这么说是因为您在 SQL 字符串中引用了您的参数。这是一个非常非常糟糕的主意:如果有人输入他们的地址,例如,');DROP TABLE STAGING;--那么您最终将执行他们的 SQL。相反,请使用 SQL 样式的占位符。那些看起来好像它们只是文字,比如VALUES (%s),而不是VALUES ('%s')

即使参数看起来像是将被 % 替换,就像您使用 Python 的%运算符一样,但实际上并非如此。将使用实际值代替它们。所以,不要引用它们。

但是,您的错误的原因是要使用的语句和参数是cursor.execute. 您目前将它们作为一个 2 长元组的单个参数传递。

这是一个固定版本:

sql_insert_table = """INSERT INTO STAGING(ADRESSE_1600 ,
                   ADRESSE_1601, ADRESSE_1602, ADRESSE_1603)
                   VALUES (%s, %s, %s, %s)"""
file = csv.reader(file('20184329:2143.csv'))
for row in file:
    cursor.execute(sql_insert_table, row)

她的女儿名叫帮助我被困在驾驶执照工厂。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用批处理将csv文件加载到mysql中?

使用 sqlldr 同时使用 2 个会话 Pentaho 水壶将两个不同的 csv 文件加载到 2 个不同的表中时出现异常

Python将一组.csv文件加载到MySQL中

使用Rubygems将CSV文件数据加载到Mysql中

如何使用C / C ++和SDL2将文件字体加载到RAM中?

如何使用 Db2 客户机将 CSV 文件远程加载到 Db2 Event Store?

Python中的ETL脚本将数据从另一个服务器.csv文件加载到mysql中

将.RData文件加载到Python中

无法使用python将数据加载到mysql中

使用Java将CSV文件加载到MySQL服务器

将 csv 文件中的行加载到 Python 中的热图轴

无法使用pymysql将数据文件加载到MySQL中-找不到文件

如何将这样的 [[a,b,c],[d,e,f].........] 数据从 csv 文件加载到 python 中?

Python 3-将JSON数据加载到我的.csv文件中

使用 Pyspark 将巨大的 csv 文件加载到 oracle 数据库表中

pyspark使用模式将csv文件加载到数据帧中

在 Talend 中使用 Postgres“复制”命令将表内容加载到 CSV 文件中

使用sqlalchemy将csv文件加载到数据库中

如何使用SymmetricDS将CSV文件加载到数据库中

如何使用Array [Int]将csv文件加载到Spark DataFrame中

使用 Spring Batch 将多个 CSV 文件加载到数据库中

我们如何使用 d3 将 CSV 文件加载到 JupyterLab 中?

如何使用docker-compose将csv加载到mysql中?

如何使用Django ORM将JSON文件中的数据加载到MySQL实例中?

如何将csv文件加载到矩阵python

使用plupload无法将超过2个文件加载到S3

使用环境变量将log4j2.xml文件加载到项目外部

将文件加载到Python

在Python中将CSV数据加载到MySQL中