pandas TypeError:在字符串格式化过程中不是所有参数都被转换?

cnh2zyt3  于 2023-03-28  发布在  其他
关注(0)|答案(1)|浏览(271)
import pymysql as pm 
import pandas as pd
import csv 

username='user'
password='pass'
host='host'
port=port
database='database'

connection = pm.connect(user=username,password=password,host=host,port=port,database=database)

with open(r"path\to\file.csv", 'r') as file:
    csvreader = csv.reader(file)
    rows = list(csvreader)

placeholders = ','.join(['%s'] * len(rows[0]))
cursor=connection.cursor()
cursor.execute(f"INSERT INTO DB_NAME.TABLE_NAME ({placeholders})", rows)

我尝试将CSV文件导入MariaDB,并收到错误:

TypeError: not all arguments converted during string formatting

在这一行:

cursor.execute(f"INSERT INTO DB_NAME.TABLE_NAME ({placeholders})", rows)

我确实计算了csv中的列数和数据库中的列数,它们匹配,所以我不确定问题是什么。

blmhpbnm

blmhpbnm1#

您的脚本中有两个错误:

  • execute()方法需要一个参数序列作为第二个参数,但是你传递的是一个通常传递给execute_many()方法的序列。

你可以简单地用print命令替换cursor.execute()来检查:

print(f"INSERT INTO DB_NAME.TABLE_NAME ({placeholders})", rows)
  • 执行SQL语句应导致语法错误。正确的语法是INSERT INTO yourtable VALUES ({placeholders})

相关问题