Python:插入Mysql时,并非所有参数都在字符串格式化期间转换

Python:插入Mysql时,并非所有参数都在字符串格式化期间转换,python,mysql,Python,Mysql,我想使用python将多条记录插入Mysql 我试过这样的方法: if request.method == 'POST': req_json = request.get_json(force=True) dir(req_json) #sys.exit() g.cursor.execute("INSERT INTO gmr (version,visitorId,dwellTime,poiId,srId,zoneId,poiProximityConfidence,zo

我想使用python将多条记录插入Mysql

我试过这样的方法:

if request.method == 'POST':
    req_json = request.get_json(force=True)
    dir(req_json)
    #sys.exit()
    g.cursor.execute("INSERT INTO gmr (version,visitorId,dwellTime,poiId,srId,zoneId,poiProximityConfidence,zoneProximityConfidence,poiPresenceConfidence,zonePresenceConfidence,normalizedTime) VALUES ({0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10})",
                         (req_json[0]['version'], req_json[0]['visitorId'], req_json[0]['dwellTime'], req_json[0]['poiId'], req_json[0]['srId'], req_json[0]['zoneId'], req_json[0]['poiProximityConfidence'], req_json[0]['zoneProximityConfidence'], req_json[0]['poiPresenceConfidence'], req_json[0]['zonePresenceConfidence'], req_json[0]['normalizedTime']))
Im传递json对象,如:

 [  
 {  
  "dwellTime":"2",
  "normalizedTime":"1489574977000",
  "poiId":"poi3",
  "poiPresenceConfidence":"15",
  "poiProximityConfidence":"1",
  "srId":"sr3",
  "version":"15",
  "visitorId":"V123",
  "zoneId":"Security",
  "zonePresenceConfidence":"40",
  "zoneProximityConfidence":"20"
 },
 {  
  "dwellTime":"234234",
  "normalizedTime":"1489574977000",
  "poiId":"poi3",
  "poiPresenceConfidence":"15",
  "poiProximityConfidence":"1",
  "srId":"sr3",
  "version":"16",
  "visitorId":"V123",
  "zoneId":"Security",
  "zonePresenceConfidence":"40",
  "zoneProximityConfidence":"20"
}
]
我得到的错误如下:

编程错误:并非所有参数都在字符串格式化过程中转换

Traceback (most recent call last): File "/root/python-mysql/venv/lib/python2.7/site-packages/flask/app.py", line 1997, in call return self.wsgi_app(environ, start_response)
File "/root/python-mysql/venv/lib/python2.7/site-packages/flask/app.py", line 1985, in wsgi_app response = self.handle_exception(e)
File "/root/python-mysql/venv/lib/python2.7/site-packages/flask/app.py", line 1540, in handle_exception reraise(exc_type, exc_value, tb)
File "/root/python-mysql/venv/lib/python2.7/site-packages/flask/app.py", line 1982, in wsgi_app response = self.full_dispatch_request()
File "/root/python-mysql/venv/lib/python2.7/site-packages/flask/app.py", line 1614, in full_dispatch_request rv = self.handle_user_exception(e)
File "/root/python-mysql/venv/lib/python2.7/site-packages/flask/app.py", line 1517, in handle_user_exception reraise(exc_type, exc_value, tb) File "/root/python-mysql/venv/lib/python2.7/site-packages/flask/app.py", line 1612, in full_dispatch_request rv = self.dispatch_request()
File "/root/python-mysql/venv/lib/python2.7/site-packages/flask/app.py", line 1598, in dispatch_request return self.view_functionsrule.endpoint
File "/root/python-mysql/venv/py_gmr.py", line 56, in add (req_json[0]['version'], req_json[0]['visitorId'], req_json[0]['dwellTime'], req_json[0]['poiId'], req_json[0]['srId'], req_json[0]['zoneId'], req_json[0]['poiProximityConfidence'], req_json[0]['zoneProximityConfidence'], req_json[0]['poiPresenceConfidence'], req_json[0]['zonePresenceConfidence'], req_json[0]['normalizedTime']))
File "/root/python-mysql/venv/lib/python2.7/site-packages/MySQLdb/cursors.py", line 283, in executemany self.rowcount = sum(self.execute(query, arg) for arg in args)
File "/root/python-mysql/venv/lib/python2.7/site-packages/MySQLdb/cursors.py", line 283, in self.rowcount = sum(self.execute(query, arg) for arg in args)
File "/root/python-mysql/venv/lib/python2.7/site-packages/MySQLdb/cursors.py", line 240, in execute self.errorhandler(self, ProgrammingError, str(m))
File "/root/python-mysql/venv/lib/python2.7/site-packages/MySQLdb/connections.py", line 52, in defaulterrorhandler raise errorclass(errorvalue) ProgrammingError: not all arguments converted during string formatting

如果我将
{0}、{1}
替换为
%s
,则只插入一个值

您不能在SQL语句中使用
{}
作为占位符。您必须使用
%s


使用
{}
无法解决仅插入一组值的“问题”。这是意料之中的,因为您只访问JSON中的第一组值。如果你想同时插入它们,你需要用for循环对值进行迭代,每次插入一个集合,就像你试图用任何列表做任何事情一样。

我用的是%s,而不是{0},因为我告诉你oly 1记录正在插入。请举一个例子说明如何使用same的循环。我真的认为你需要做一个基本的编程教程。我并不是不想帮上忙,但是写一个循环应该是你学会的第一件事。