1. 程式人生 > >python讀取txt並將資料插入到sql中

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()