2016-06-29 14 views
0

Was soll ich meinem Code hinzufügen, so dass es in der Zeile der Tabelle druckt, ist der Benutzername if exist == True :? Es kann auch die ID des Datensatzes zurückgeben, da sie mir ihre Position in der Tabelle anzeigen würde. Ich habe den Datenbankcode nicht eingefügt, weil ich denke, dass es nicht notwendig ist. Sorry für meine schlechte Erklärung Englisch ist nicht meine Muttersprache.Sqlalchemy: Suchen Sie Zeile, in der Datensatz befindet

Antwort

1

sqlalchemy unterstützt select Anweisung Abfragen. So würde ich so etwas wie:

def _get_users(attempt): 
    stmt = sqlalchemy.select([users]).where(users.c.username == attempt) 
    return [dict(r) for r in sqlalchemy.execute(stmt)] 

def _get_attempt(): 
    username_attempt = raw_input('Enter username:') 
    return unicode(username_attempt) 

attempt = _get_attempt() 
recs = _get_users(attempt) 

while not recs: 
    print 'Incorrect username' 
    attempt = _get_attempt() 
    recs = _get_users(attempt) 
print recs 

Wenn recs nicht leer ist (und ein gültiger Benutzername gegeben wurde), recs eine Liste der Wörterbücher enthalten, die die Zeilen in der Tabelle. Sie können recs durchqueren und die id jeder Zeile erhalten.

Hinweis: Sie müssen users Tabelle definieren:

db_metadata = sqlalchemy.MetaData() 
users = sqlalchemy.Table('users', db_metadata, 
    Column('id', sqlalchemy.Integer, primary_key=True), 
    Column('username', sqlalchemy.Integer, primary_key=True), 
    # add rest of your table schema here... 
) 
+0

Ich mag rohen SQL in meinem Code vermeiden, dass so bin ich von SQL-Injektionen sicher. – ThP

+1

aktualisiert, um 'select' Methode anstelle von' text' zu verwenden. Check out [sqlalchemy docs] (http://docs.sqlalchemy.org/en/latest/core/tutorial.html#selecting) für weitere Informationen –

+0

Vielen Dank! – ThP