Python - Mysql

Programovacie jazyky, rady, poradňa...
alliedko
Amateur
Amateur
Používateľov profilový obrázok
Príspevky: 20
Registrovaný: 03 nov 2005, 10:25
Kontaktovať používateľa:

Python - Mysql

Príspevok od používateľa alliedko »

Kód: Vybrať všetko


import sys
import MySQLdb
import time
import subprocess
import os


def login():
    db = MySQLdb.connect(host="localhost", user="root", passwd="rnQFwsEX3h2bjd6S", db="l2_backup")
    cursor = db.cursor()
    cursor.execute("SELECT name, pass, comment FROM login WHERE name='"+user+"' AND pass='"+userpass+"'")
    result = cursor.fetchall()

    for record in result:
        userlogin = str(record[0])
        userpasslogin = str(record[1])

    db.close()

    if userlogin == user and userpasslogin == userpass:
        return 1
    else:
        return 0


print ("Prihlasenie do systemu:")
print ("")

user = str(raw_input("Meno:"))
userpass = str(raw_input("Heslo:"))

if login() == 1:
    print ("Prihlaseny")
else:
    print ("Nerihlaseny")
Ahojte,

pri spravnom zadani uzivatela sa chyba nevyskitne.

Pri nespravnom zadani uzivate la odkazuje na chybu:

Kód: Vybrať všetko

Traceback (most recent call last):
  File "<string>", line 244, in run_nodebug
  File "C:\Users\Pater\Desktop\PYTHON\MySQL_Zapis.py", line 60, in <module>
    if login() == 1:
  File "C:\Users\Pater\Desktop\PYTHON\MySQL_Zapis.py", line 19, in login
    if userlogin == user and userpasslogin == userpass:
UnboundLocalError: local variable 'userlogin' referenced before assignment
Viete mi poradit? Dakujem[/code]
sundevil
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4169
Registrovaný: 18 mar 2005, 12:03
Bydlisko: BA

Príspevok od používateľa sundevil »

ked sa na to takto pozriem tak:
kedze login neprebehol uspesne tak nasledujuca cast koda sa nevykona, lebo select vyberie 0 riadkov z DB

Kód: Vybrať všetko

    for record in result:
        userlogin = str(record[0])
        userpasslogin = str(record[1]) 
takze premenne userlogin a userpasslogin nemozu ziskat hodnotu, kedze predtym nemali priradenu ziadnu hodnotu tak ti to tu skonci errorom
alliedko
Amateur
Amateur
Používateľov profilový obrázok
Príspevky: 20
Registrovaný: 03 nov 2005, 10:25
Kontaktovať používateľa:

Príspevok od používateľa alliedko »

Uz som na to prisiel, stacilo zadat aby return vracal hodnotu "1"

Kód: Vybrať všetko

return "1"
Napísať odpoveď