2014-11-08 112 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)) 
#       ^^ ^^ ^^ ^^ ^         ^