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(),不应该只是俩个吗?如果是SQL的语法使用错误,那么这里的SQL语法该如何去改?
**
csv本质上就是个文本文档,只不过扩展名改了一下而已
你要往里面写数字,也应该转成str类型写入
永远不要往里面直接写int型,那它变成二进制文件了
你就读不出来了
此外,cursor.executemany(sql, lis_data,lis_data1)
executemany有3个参数,第一个参数是self,传入的是cursor,lis_data1删掉
执行executemany()方法时,应该将待插入的多个参数作为一个列表传递进去,而不是将每个参数当做一个单独的参数传递进去。因此,应该将以下行:
cursor.executemany(sql, lis_data,lis_data1)
修改为:
cursor.executemany(sql, zip(lis_data, lis_data1))
这样,将字符串数据和整型数据一起插入到数据库表中的前两列。
在这条SQL语句中插入多个值的情况下,你可以使用以下示例:
INSERT INTO students (col1, col2) VALUES (%s, %s), (%s, %s), (%s, %s), ...
每个占位符都将被更换为以下值的一个:一个元组中的值对。因此,zip()函数会将两个列表中的值打包成一个元组对,并将所有这些元组对添加到一个列表中,该列表被传递给executemany()方法。