2014-03-19 65 views
0

我想導出csv文件到MySQL,每次我嘗試打印時收到此錯誤。 任何幫助將是appreciated.I現在不要我要去哪裏錯了..UnicodeEncodeError:'ascii'編解碼器無法編碼時,導出csv到mysql

reader = csv.reader(open(csvfile, 'r')) 

    for row in reader: 
     print row 
     try: 
      (location_id, vrm, valid_datetime) = row 
     except: 
      print "Error with row: " % row 
      #sys.exit(3) 


     # Hack for Roseburys 
     if (location_id == 262): 
      location_id = "198" 
     if (location_id == "262"): 
      location_id = "198" 


     tmp = valid_datetime.split(" ") 
     valid_date = tmp[0] 

     # Tidy up the VRM 
     vrm = vrm.replace(' ', '') 
     vrm = vrm.upper() 

     tmp = valid_date.split('/') 
     iso_date = "%s-%s-%s" % (tmp[2], tmp[1], tmp[0]) 
     entryDatetime = "%s 00:00:00" % iso_date 
     expiryDatetime = "%s 23:59:59" % iso_date 
     sql_local = """INSERT INTO customer_1.pay_and_display 
      (plate, machine_id, ticket_datetime, expiry_datetime, ticket_name, ticket_price) 
      VALUES ("%s", "%s", "%s", "%s", "%s", "%s") """ % (vrm, location_id, entryDatetime, expiryDatetime, "WL", 0) 
     print sql_local 
     cursor.execute(sql_local) 
+0

這是一個很常見錯誤消息,它可能是最好的嘗試瞭解潛在的問題,而不是讓別人給你一個可能的一次性修復這個特定的代碼。我建議閱讀[Unicode指導方針](http://docs.python.org/2/howto/unicode.html)瞭解這條消息實際上試圖告訴你什麼。 Joel Spolsky的[本文](http://www.joelonsoftware.com/articles/Unicode.html)是另一個備受好評的資源。 –

+0

提供完整的追溯。不相關:不要使用字符串格式來插入值(不要:'cursor.execute(「...%s」%value)'),而是使用參數化查詢:'cursor.execute(「...%s 「,(價值,))' – jfs

回答

0

讀卡器= csv.reader(開放(csvfile, 'R'))

for row in reader: 
    print row 
    try: 
     (location_id, vrm, valid_datetime) = row 
    except: 
     print "Error with row: " % row 
     #sys.exit(3) 


    # Hack for Roseburys 
    if (location_id == 262): 
     location_id = "198" 
    if (location_id == "262"): 
     location_id = "198" 


    tmp = valid_datetime.split(" ") 
    valid_date = tmp[0] 

    # Tidy up the VRM 
    vrm = vrm.replace(' ', '') 
    vrm = vrm.upper() 

    tmp = valid_date.split('/') 
    iso_date = "%s-%s-%s" % (tmp[2], tmp[1], tmp[0]) 
    entryDatetime = "%s 00:00:00" % iso_date 
    expiryDatetime = "%s 23:59:59" % iso_date 
    sql_local = """INSERT INTO customer_1.pay_and_display 
     (plate, machine_id, ticket_datetime, expiry_datetime, ticket_name, ticket_price) 
     VALUES ("%s", "%s", "%s", "%s", "%s", "%s") """ % (vrm, location_id, entryDatetime, expiryDatetime, "WL", 0) 
    print sql_local 
    cursor.execute(sql_local) 
相關問題