城南粥铺 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日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来