2015-01-09 2 views
0

У меня есть проблема, я пытаюсь сделать проверку между именем пользователем к этому имени пользователь электронной почте по compairing в ROWID в питоне и SQLite, вот это код:SQLite ERROR нет такого столбца 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 + "'") 
Смежные вопросы