我使用MySQLdb將大量來自文本文件的數據上傳到MySQL服務器。這工作正常,如果我手動準備一個字符串,如'as', '123', 12, 23
,但我無法弄清楚如何循環訪問列表來生成這個,因爲我需要連接字符串和整數。使用MySQLdb將字符串和字符串添加到MySql服務器
,工程的INSERT語句的例子如下:
""" INSERT INTO ACS(ST, CODE, BC001, BC002, BC003)
VALUES ('AK', '1234567', 20, 30, 40)"""
這是我試圖生成一個列表這樣的說法:
import MySQLdb
# sample data
table = 'TestTable'
header = ['ST', 'CODE', 'BC001', 'BC002', 'BC003']
values = [['AA', '1234567', 20, 30, 40], ['BB', '1234567', 20, 30, 40], ['CC', '1234567', 20, 30, 40],['DD', '1234567', 20, 30, 40]]
# local SQL server on my computer
db = MySQLdb.connect (host = 'localhost', user = 'root', passwd = '', db = 'test')
# prepare a cursor object using cursor() method
cursor = db.cursor()
# header columns
sql1 = '('
for i in range(len(header)):
sql1 += header[i] + ','
sql1 = 'INSERT INTO ' + table + sql1[:-1] + ')'
# now loop through data values and combine with header each time
for i in range(len(values)):
sql2 = ''
for j in range(len(values[i])):
sql2 += values[i][j] + ',' #error occurs here
# structure: sql2 = """ VALUES ('AA', '1234567', 20, 30, 40)"""
sql2 = 'VALUES ' + table + sql2[:-1] + ')'
sql = sql1 + sql2
try:
# Execute the SQL command
cursor.execute(sql)
# Commit your changes in the database
db.commit()
except:
# Rollback in case there is any error
db.rollback()
# disconnect from server
db.close()
該錯誤消息我得到的是
TypeError: unsupported operand type(s) for +: 'int' and 'str'
我明白爲什麼會發生這種情況,但我無法弄清楚另一種方法生成字符串。有沒有更好的方法來製作這些琴絃?
我在Win7 64位上使用Python27。
對不起,我看着它在谷歌,有沒有這樣的東西作爲pymsql?你可以給主頁鏈接嗎? –
糟糕,我寫了錯誤的包名。它是MySQLdb - 我會更新這個問題;對於那個很抱歉。 – djq