将列表添加到mysql数据库

时间:2016-03-02 18:26:11

标签: python mysql-python

这让我疯狂了两天。我想在mysql数据库中添加一个2d列表。我的代码如下:

import MySQLdb as mdb

i = 0
ins = open( "test.txt", "r" )
skeds = []
for line in ins:
  i = i + 1
  line = line.replace(",", "")
  #line = line.replace('""', "")
  line = line.replace("\xc2\xa0", "EMPTY")
  line = line.replace("\xef\xbb\xbf", "")
  line = line.strip()
  line = line.strip().upper()
  line = line.split('""')
  line = filter(None, line)
  skeds.append(line)

del skeds[i-1]
print(skeds[277])

con = mdb.connect('localhost', 'testuser', 'test123', 'sked')

with con:
#AT this point sked = ['WATCH', 'VT-X', 'EMPTY', '10:30', '15:00', 'EMPTY', 'DOE JON [1XX]', 'PM SDO', '4.5', 'EMPTY', 'EMPTY']
    cur = con.cursor()
    cur.execute("DROP TABLE IF EXISTS test3")
    cur.execute("CREATE TABLE test3(Type VARCHAR(50), VT VARCHAR(50), Brief VARCHAR(50), EDT VARCHAR(50), RTB VARCHAR(50), Instructor VARCHAR(50), Student VARCHAR(50), Event VARCHAR(50), Hrs VARCHAR(50), Remarks VARCHAR(75), Location VARCHAR(50))")


params = "INSERT INTO test3(Type, VT, Brief, EDT, RTB, Instructor, Student, Event, Hrs, Remarks, Location) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
dats = skeds[36]

cur.executemany(params, dats)

以下是我收到的错误信息:

smartsked Main$ python sked1.py
['WATCH', 'VT-9', 'EMPTY', '10:30', '15:00', 'EMPTY', 'SENG PATRICK [1STLT]', 'PM SDO', '4.5', 'EMPTY', 'EMPTY']
Traceback (most recent call last):
  File "sked1.py", line 36, in <module>
    cur.executemany(params, dats)   
  File "/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.11-x86_64.egg/MySQLdb/cursors.py", line 244, in executemany
    self.errorhandler(self, ProgrammingError, msg.args[0])
  File "/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.11-x86_64.egg/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.ProgrammingError: not enough arguments for format string

有什么建议吗?我还想在我的skeds列表的长度上迭代executemany函数,以便将完整的2d列表放入数据库。

1 个答案:

答案 0 :(得分:0)

数据格式化是个问题。我的列表无意中拥有了预期数据的2倍。