2015-09-21 3 views
-1

У меня возникли некоторые проблемы со следующим кодом. Я провел половину ночи, пытаясь заставить это работать. Я тестирую сервер xampp локально для тестирования. У меня есть кое-что прокомментированное, когда я тестировал, и экспериментировал.Проблема с Python. Mysql

Ошибка: http://pastebin.com/SFzyBLRp

if(nigcon.execute("SELECT * FROM `USER` WHERE `username` = '" + username + "' AND `password` = "' + password + '"")): 
AttributeError: 'Connection' object has no attribute 'execute' 

Код: http://pastebin.com/LE6fmek4

# Login Menu 
# Author BlackWidow Aka Zachary 
# intgamer.net or sinfulandroid.net 
# Purpose Login Script for the Network Chat 

import time 
import sys 
import MySQLdb 


def loginmenu(): 
     print("Welcome to International Gamers Network Chat") 
     print "" 
     time.sleep(1) 
     #connect to the sql db 
     nigcon = MySQLdb.connect("localhost","root","","testing") 
     #creation of the cursor 
     cursor = nigcon.cursor() 
     print "Connected to Login Server" 
     print "" 
     print "Please input your information" 
     time.sleep(1) 
     username = raw_input("Username: ") 
     #if(username == 'BlackWidow'): 
     password = raw_input("Password: ") 
     if(nigcon.execute("SELECT * FROM `USER` WHERE `username` = '" + username + "' AND `password` = "' + password + '"")): 
     #if(cursor.execute("Select * FROM 'USER' WHERE 'username' '='" + username + "' AND password '=" + password + "'")): 
      db.commit() 
      print "Logged In" 

loginmenu() 
+0

Согласно документации для MySQL-Python вызов выполнения выполняется только на курсоре, который вы закомментировали. Что произойдет, когда вы запустите прокомментированную часть своего кода с помощью «cursor.execute»? Это та же ошибка? – idjaw

+0

Ничего себе. Я такой дебил. Извините, это был действительно длинный день, ахаха. Я не самый яркий, когда дело доходит до mysql. Я получаю эту ошибку сейчас http://pastebin.com/82GSn3Q7 – BlackWidow

+0

Это похоже на проблему форматирования строк в вашем запросе. Обновите исходное сообщение, чтобы отразить последнюю проблему. Я напишу, что я думаю, что ваша строка должна выглядеть. – idjaw

ответ

0

Использование your_cursor.execute() вместо your_connection.execute().

Между тем nigcon = MySQLdb.connect("localhost","root","","testing") может исключать исключение.

#I would try to get a handle in this way. 
try: 
    hanler = MySQLdb.connect(
        host=your_host, 
        port=your_port 
        user=your_user, 
        passwd=your_passwd, 
        db=your_db) 
    hanler.autocommit(True) 
except MySQLdb.OperationalError as ex: 
    return False 

И execute Ваш SQL, Вам нужен cursor.

#I would do all of this in this way 
if hanler is None: 
    return False 
cur = self.hanler.cursor() 
try: 
    cur.execute(sql) 
except MySQLdb.ProgrammingError as ex: 
    return False 

Небольшой совет по вашему execute стиль. Попробуйте способ execute(query, args).

sql = "SELECT * FROM USER WHERE username = %s AND password=%s" 
cur.execute(sql,(your_usename, your_passwd)) 
Смежные вопросы