Python MySQLdb - 获取ValueError

时间:2016-06-14 19:53:09

标签: python mysql mysql-python

尝试通过Python使用MySQLdb ...代码将列表导入MySQL。

我运行它时会得到一个ValueError -

sheets(myString).select

代码_

query = query % tuple([db.literal(item) for item in args])
ValueError: unsupported format character ',' (0x2c) at index 51

当我打印query_string时,语句看起来很好并且清理了#39;价值似乎很好 - 任何帮助都会受到赞赏。

import MySQLdb
import ystockquote
import re

mydb = MySQLdb.connect(host='localhost',
       user= '****',
       passwd='****',
       db='****')
cur = mydb.cursor()

name = raw_input('please input a symbol_')
data = ystockquote.get_all(name)
stock = data.values()
clean = (", ".join(stock))
#var_string = ', '.join('?' * len(clean))
query_string = 'INSERT IGNORE INTO YAHOO VALUES (\"%s\");' % clean
cur.execute(query_string, clean)
print clean

1 个答案:

答案 0 :(得分:1)

当以下列方式使用通配符或字符串替换时,

.execute需要2个参数:

  • query_string,带有值占位符%s
  • 将取代上述%s
  • 的元组值

您无需手动“清理”您的值。我还在查询中包含了列名,以便明确:

data = ystockquote.get_all(name)
stock = data.values()
columns = data.keys()
columns[columns.index('change')] = '_change'
var_string = '%s' + ',%s' * (len(stock)-1))
query_string = '''
    INSERT IGNORE INTO YAHOO 
    ('''+','.join('`%s`' % (c,) for c in columns)+''') 
    VALUES (%s);''' % var_string
cur.execute(query_string, tuple(stock))