python - 使用 python 在 mysql Db 中插入元组列表

标签 python mysql csv

我正在尝试将从 csv 文件中获取的带有数字的元组列表插入到我的 MySQL 数据库中。

我的代码:

readcsv = pd.read_csv( "***********************.csv", skiprows=45, sep=";")
cols = str(readcsv.columns.values.tolist()).replace('[','').replace(']', '').replace('\'','`')
for i in range(0, readcsv.shape[0], 1):
    values = str(readcsv.iloc[i:i+1].values.tolist()).replace('[', '(').replace(']', ')').replace('((', '(').replace('))', ')')


print(values)

conn = pymysql.connect(host='****', port=3306, user='root', passwd='*****', db='***')

cursor = conn.cursor()
rows = [values]

a = ','.join(map(str ,rows))
b = ','.join(map(str ,rows))
c =','.join(map(str ,rows))
d =','.join(map(str ,rows))

sql = "INSERT INTO csv_files.csv_file(ms, Power_in_W,Distance_in_mm,Force_in_N) VALUES ({},{},{},{})".format(a,b,c,d)

cursor.execute(sql)
conn.commit()
conn.close()

我已经在 mySQL 中创建了一个数据库,其中包含列 MS、Power_in_W、Distance_in_mm、Force_in_N。但不知怎的,我无法将 csv 中的数据插入其中。由于错误:

pymysql.err.InternalError: (1241, 'Operand should contain 1 column(s)')

我用print(values)得到的输出是:

(1.0, 0.0, 0.0, 0.0), (2.0, 60.3, 960.0, 0.0), (3.0, 60.3, 964.0,0.0), (4.0, 60.3, 967.0, 0.0), (5.0, 61.89, 964.0, 0.0), (6.0, 61.89, 967.0, 0.0), (7.0, 13.69, 962.0, 0.0)

...

有谁知道我做错了什么?

最佳答案

使用execute_many方法,并将值作为参数传递。

sql = "INSERT INTO csv_files.csv_file(ms, Power_in_W,Distance_in_mm,Force_in_N) VALUES (%s, %s, %s, %s)"

cursor.executemany(sql, values)

关于python - 使用 python 在 mysql Db 中插入元组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59862499/

相关文章:

mysql - Prestashop 数据库的相反 SQL 查询 |显示不在仓库中的产品

python - 使用 Python 编码东亚语言

asp.net-mvc - Controller 循环 mvc asp.net 中的进度条

python - 在 Windows 中复制 fork() 的最佳方法是什么?

python - 将大空间分隔文件解析为 sqlite

MySQL GROUP BY 没有给出期望的结果

php - 收到 PHP 警告 : Module '[module name]' already loaded in Unknown on line 0

PostgreSQL 导出 COMPOUND 查询输出到 CSV

python - 如何转换 Pandas Data Frame Schema

python - 根据python中另一个字符串元素的数量删除字符串元素