城南粥铺 2023-03-15 00:16 采纳率: 100%
浏览 13
已结题

csv不同数据插入MySQL数据库错误

我自己生成了两个csv文件,一个是写入了字符串数据,一个写入了整形数据,我想将这两个csv文件分别导入已经创建好的数据库对应表的列中去。
已经创建好的数据库及表如下:

img

import pymysql 
import pandas as pd 
orig_name = pd.read_csv('E:\pythonProject Web\min web框架\csv文件数据的写入\\name2.csv')
#我name2.csv所在的位置
orig_number = pd.read_csv('E:\pythonProject Web\min web框架\csv文件数据的写入\\number.csv')
#我number.csv所在的位置
lis_data = orig_name.values.tolist() 
lis_data1 = orig_number.values.tolist() 
db = pymysql.connect(host='localhost',
                      user='root',
                      password='数据库的密码',
                      port=3306,
                      db='stu_table')
cursor = db.cursor() 
#这里插入的字符串数据和整型数据正好是stu_table数据库students中的前俩个列
sql = 'INSERT INTO students VALUES(%s,%s)' 
cursor.executemany(sql, lis_data,lis_data1)
db.commit()
以上代码报错为:executemany() takes 3 positional arguments but 4 were given意思是Executemany()接受3个位置参数,但给出了4个
我的怀疑是不是SQL的用法使用错误,但是我又不知道这种多个数据的精确插入数据库SQL的语法到底该如何去写

**疑惑:不理解为什么最后传入了四个位置参数给了Executemany(),不应该只是俩个吗?如果是SQL的语法使用错误,那么这里的SQL语法该如何去改?
**

  • 写回答

3条回答 默认 最新

  • 於黾 2023-03-15 08:04
    关注

    csv本质上就是个文本文档,只不过扩展名改了一下而已
    你要往里面写数字,也应该转成str类型写入
    永远不要往里面直接写int型,那它变成二进制文件了
    你就读不出来了
    此外,cursor.executemany(sql, lis_data,lis_data1)
    executemany有3个参数,第一个参数是self,传入的是cursor,lis_data1删掉

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月23日
  • 已采纳回答 3月15日
  • 创建了问题 3月15日

悬赏问题

  • ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
  • ¥20 网站后台使用极速模式非常的卡
  • ¥20 Keil uVision5创建project没反应
  • ¥15 mmseqs内存报错
  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)