原始数据在txt中 处理有很多不便 想要把它们插入到sql中去
代码如下:
连接数据库:
import MySQLdb
conn=MySQLdb.connect(host="localhost",user="root",passwd="root",db="mydatabase",charset="utf8")
cursor = conn.cursor()
if conn:
print("data base has already connected")
打开文件获取一行数据
f = open("data_first.csv","r")
f.readline()#因为txt中第一行一般为列名,因此用readline先将这行数据跳过
拼接insert语句
我要插入的数据表为MyData,数据列为21列,第一列为id列。数据表已经在sql中存在,且txt中用逗号隔开的数据列也为21列
insertcolumn = "id "
s = "'%s'"
for i in range(1,20,1):
s = s + ",'%s'"
insertcolumn = "Insert into MyData "+"values("+s+")"
循环插入
这一部分需要注意的是,用readline读取的时候,会把每行末尾的\n也读取进去,可以用strip对其进行处理
while True:
line = f.readline().strip('\n')#按行读取且处理掉换行符,效果:"\'\n'变为了''
if line:
#print(line.split(','))
list = line.split(',')#数据以逗号分隔,因此用split(',')
#print(len(list))#获取长度
insertcolumn_full = insertcolumn%tuple(list)#%s的字符串格式化传参只支持元组和字典,不支持列表,因此这里需要用tuple(list)将list转为元组
#print(insertcolumn_full)
cursor.execute(insertcolumn_full)#运行
conn.commit()#事务提交,这句一定要有!否则即使python不报错 数据也无法成功插入sql
else:
break
关闭
cursor.close()
conn.close()
f.close()