2017-10-01 15 views
-2

Mit mySQL verwende ich: (Daten erhalten und durch eine Tabelle schleifen)Ausgabe ist Tupel wie [{a: b, d: c, ....}, {a: f, b: q, ...}, {a: v, b: k, ....}, ...]

Benutzer ist die Tabelle. Die Konsole gibt ein Tupel aus.

db = MySQLdb.connect("username.mysql.pythonanywhere-services.com", "username", "password", "username$database") 
cursor = db.cursor()  
cursor.execute('SELECT uid, firstname, lastname, username, city, state, streetaddress, email, special_needs, phonenumber, zipcode FROM users') 
results = cursor.fetchall() 
print(results) 

Ich erhalte diese zurück:

[{'special_needs': 'N/A', 'phonenumber': '5555555555', 'city': 'Oakland', 'zipcode': '44444', 'streetaddress': '32323 Apple St.', 'state': 'CA', 'email': '[email protected]', 'uid': 1, 'firstname': 'Bernie', 'lastname': 'Sanders', 'username': 'bernieswift'}, {'special_needs': 'N/A', 'phonenumber': '6666666666', 'city': 'Greenappple', 'zipcode': '77777', 'streetaddress': '24936 Calaroga Ave.', 'state': 'CA', 'email': '[email protected]', 'uid': 2, 'firstname': 'john', 'lastname': 'lost', 'username': 'tony'}] 

Was ich tat vor: (funktioniert lokal)

print_str = "<table>" 
for result in results: 
print_str += "<tr><td> %s <br></td><td> %s <br></td><td> %s <br></td><td> %s <br></td><td> %s <br></td><td> %s <br></td><td> %s <br></td><td> %s <br></td><td> %s <br></td><td> %s <br></td><td> %s <br></td><td> %s <br></td><tr>" % (result['uid'], result['firstname'], result['lastname'], result['username'], result['city'], result['state'], result['streetaddress'], result['email'], result['special_needs'], result['phonenumber'], result['zipcode']) 
    print_str += "</table>" 

Wie kann ich bestimmte Werte für uid erhalten, Vorname, etc. ? (vorausgesetzt, ich möchte die gesamte Datenbank durchlaufen) Wie bekomme ich die einzelnen Werte aus der Datenbank? Ich bin wirklich verwirrt von Tupel.

+0

Meinst du, wie man sie wieder aus den Werten für den Zugriff oder nur die Werte aus der Datenbank? – Adders

+0

So greifen Sie auf die Werte aus der Datenbank zu –

+0

Ich habe nicht gesehen, dass sie so zurückkommen - Speichern Sie sie in einzelnen Spalten und Reihen? (fyi nicht ich dich unten abstimmen) – Adders

Antwort

0

Ich denke, dass Sie so etwas tun können. zum Beispiel möchten Sie Vorname, wo uid auf 1

uname = [counter['firsname'] for counter in result if counter['uid'] == 1] gleich ist, die zum Beispiel Dies funktioniert mit komplizierteren Aussagen ['Bernie']

zurück:

data = [(counter['firstname'],counter['lastname']) for counter in result if counter['city'] in ['Oakland', 'Greenappple']]

kehrt [('Bernie', 'Sanders'), ('john', 'lost')]

Obwohl dies nicht die perfekte Lösung ist darauf wird die Arbeit erledigt.

0

Sie müssen Ihre Datenbank initialisieren, indem Sie DictCursor entfernen.

Sie werden so etwas wie die folgenden haben:

`MySQLdb.connect(user='joe', passwd='password', db='dbname', 
         cursorclass=MySQLdb.cursors.DictCursor)` 
Verwandte Themen