2016-07-28 17 views
0

Ich versuche, ein Login-System mit Python und MySQL zu machen. Ich habe eine Verbindung zur Datenbank hergestellt, aber wenn ich versuche, Werte in eine Tabelle einzufügen, schlägt sie fehl. Ich bin mir nicht sicher, was los ist. Ich benutze Python 3.5 und das PyMySQL-Modul.PyMySQL Fehler beim Einfügen von Werten in Tabelle. - Python

#!python3 
    import pymysql, sys, time 
    try: 
     print('Connecting.....') 
     time.sleep(1.66) 
     conn = pymysql.connect(user='root', passwd='root', host='127.0.0.1', port=3306, database='MySQL') 
     print('Connection suceeded!') 
    except: 
     print('Connection failed.') 
     sys.exit('Error.') 

    cursor = conn.cursor() 

    sql = "INSERT INTO login(USER, PASS) VALUES('test', 'val')" 

    try: 
     cursor.execute(sql) 
     conn.commit() 
    except: 
     conn.rollback() 
     print('Operation failed.') 

    conn.close() 
+0

Können Sie beschreiben, die Aussage "es nicht" ein wenig besser? Was geschieht? Hast du eine Ausnahme? – mgilson

+0

Ich weiß auch nicht viel über den MySQL-Parser, aber normalerweise sehe ich ein Leerzeichen zwischen dem Tabellennamen und den Parens: "" INSERT INTO Login (USER, PASS) VALUES ('test', 'val') "' – mgilson

+0

Nein, ich habe die Ausnahme mit der Anweisung try/except behandelt. Wenn ich die Anweisung entferne, bekomme ich das - (1054, "Unbekannte Spalte 'USER' in 'Feldliste'") –

Antwort

0

Ich denke, es kann mit der Reihenfolge der Anweisungen in der Verbindung zu tun haben. Laut PyMySQL github (gefunden here) ist die richtige Reihenfolge Host, Port, Benutzer, passwd, db.

+0

Zweifelhaft - Standardargumente sollten in beliebiger Weise geliefert werden können Reihenfolge beim Aufruf nach Schlüsselwort. – mgilson

0

So:

user = input("User: ") 
pass = input("Pass: ") 
sql = "INSERT INTO login(USER, PASS) VALUES('%s', '%s')"%(user, pass) 

btw sollten Sie wie folgt an:

conn = pymysql.connect(
    host='127.0.0.1', 
    user='root', 
    passwd='root', 
    db='MySQL 
    )