我有两个清单。
一个来自传感器的输出字符串列表。 例如
output = "1,2,3,4,5,6"
output = output.split (',')
第二个列表是列标题
columns = "date,time,name,age,etc,etc2"
columns = columns.split (',')
列变量的顺序与输出值的变化一样。
我想使用columns变量将日期上传到mysql,以指示值的字段和输出变量。
这是我的代码,它不会将列作为列表仅作为单个值显示?
#!/usr/bin/python
from device import output
from device import columns
mydb = MySQLdb.connect(host="localhost", user="", passwd="", db="")
cursor = mydb.cursor()
with mydb:
cursor.execute('INSERT INTO logging(columns) '\
'VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)', output)
错误
Traceback (most recent call last):
File "./upload4.py", line 27, in <module>
'VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)', output)
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
self.errorhandler(self, exc, value)
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1136, "Column count doesn't match value count at row 1")
任何帮助表示赞赏!
答案 0 :(得分:0)
查询应该以这种方式构建:
&#39; INSERT INTO logging({})VALUES({})&#39; .format(&#39;,&#39; .join(列),&#39;,&#39; .join([&#39;%s&#39;] * len(列)))