python读取txt并将数据插入到sql中

原始数据在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()




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值