2015-01-09 71 views
0

我有一個問題,我試圖通過compairing在Python和SQLite的ROWID做一個用戶名,以該用戶名的電子郵件之間的驗證,這裏是代碼:SQLite的錯誤沒有這樣的列的Python

username = self.txtUsername.GetValue() 
email = self.txtEmail.GetValue() 
UsernameE = self.conn.execute("SELECT rowid,* FROM tblPlayers WHERE p_Username=" 
    + username) 
EmailU = self.conn.execute("SELECT rowid,* FROM tblPlayers WHERE p_Email=" + email) 

的錯誤是:

> UsernameE = self.conn.execute("SELECT rowid,* FROM tblPlayers WHERE p_Username=" 
     + username) 
sqlite3.OperationalError: no such column: "what i inserted in the username" 
+0

使用縮進,而不是反引號的代碼塊。我會改變它,但它太小了編輯被允許。 – Holloway

回答

1

您的SQL格式錯誤,因爲您沒有在用戶名值後關閉報價。但是,你不應該這樣做無論如何這種方式:你應該使用參數:

self.conn.execute("SELECT rowid,* FROM tblPlayers WHERE p_Username=? ", (username,)) 

另外請注意,執行不返回值:你需要fetchone()去取,如。

+0

它的工作,但用戶名和電子郵件的價值是類似於0x0316 ...我如何將其轉換爲該值後面的實際字符串?嘗試使用fetchone()和fetchall(),但我得到的sqlite.connection沒有這個 – user3628517

+0

的屬性你需要獲得一個遊標('cur = self.conn.cursor()')並調用execute和fetchone,而不是直接在連接對象上。嘗試了 –

+0

,但每個變量的返回值都是None – user3628517

0

嘗試增加引號的用戶名:

UsernameE = self.conn.execute("SELECT rowid,* FROM tblPlayers WHERE p_Username = '" + username + "'")