2014-11-08 237 views
1

嗨我正在一个小程序来存储用户名和真实姓名,我想使用MySQL这是我第一次使用它,我正在跟随一个教程,但他们已经做了我一样但我得到以下MySQL:1064语法错误

1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' 

错误消息我也不能确定哪一行的问题,因为它只是说'

这里是我当前的代码,当我执行的代码复制到phpMyAdmin的在运行时我添加了数值

import MySQLdb 
Users = MySQLdb.connect('sql-.freemysqlhosting.net', 'sql4---16', 'uY---R5*', 'sql4---16') 
c = Users.cursor() 

Username = raw_input('Enter Username: ') 
FirstName = raw_input('Enter first name: ') 
LastName = raw_input('Enter last name: ') 
Balance = raw_input('Enter deposit: ') 

c.execute('INSERT INTO Users (Username, FirstName, LastName, Balance) VALUES (?,?,?,?)', 
      Username, FirstName, LastName, Balance) 

Users.commit() 
Users.close() 
+0

什么'VALUES(%S,% s,%s,%s)'(或者你对最后一列有什么类型)? – Cheery 2014-11-08 02:32:23

+0

这两个引号一起表示MySQL在发现错误之前到达SQL语句的末尾。 – 2014-11-08 03:16:29

回答

0

您的代码有两个问题。

  1. MySQLdb中的默认“paramstyle”是%s。参考:MySQLdb User's Guide
  2. 的第二个参数.execute()预计序列(例如元组,列表,...)

查询更改为:

c.execute('''INSERT INTO Users (Username, FirstName, LastName, Balance) 
        VALUES (%s,%s,%s,%s)''', (Username, FirstName, LastName, Balance)) 
#       ^^ ^^ ^^ ^^ ^         ^