Forum >> Programmazione Python >> Database >> Recuperare dati di una specifica colonna

Pagina: 1

Buongiorno, vi chiedo aiuto in merito al recupero di dati di una specifica colonna per un range di id da data base mysql.
In pratica devo recuperare da id 1 ad id 8 i dati della colonna user dal db utenti e salvarli in 8 variabili global.




Sto litigando da giorni io ed il db




Grazie per l'aiuto
Ciao caro, facci vedere cosa hai scritto e dove sei arrivato, così correggiamo quello che non va (ricorda di formattare il testo con l'apposito pulsante "code", quello che trovi prima della tavolozza dei colori).

Dai anche qualche informazione su che versione di Python usi, su che piattaforma, etc...

Cya
dbConn = MySQLdb.connect(host,user,password,dbname)
cursor = dbConn.cursor()
query = ("SELECT nome FROM users WHERE id BETWEEN %s AND %s")
id_start = 1
id_end = 8
cursor.execute(query, (id_start, id_end))
rows = cursor.fetchall()
for row in rows:
global utente001
utente001 = row[0]
global utente002
utente002 = row[0]
global utente003
utente003 = row[0]
global utente004
utente004 = row[0]
global utente005
utente005 = row[0]
global utente006
utente006 = row[0]
global utente007
zona007 = row[0]
global utente008
utente008 = row[0]
dbConn.commit()
cursor.close()
So che è sbagliatissima la sintassi ma non riesco ad uscirmene.grazie Ciao
Uso Python 2.7.11 su debian con cpu ARM
dbConn = MySQLdb.connect(host,user,password,dbname)
cursor = dbConn.cursor()
query = ("SELECT nome FROM users WHERE id BETWEEN %s AND %s")
id_start = 1
id_end = 8
cursor.execute(query, (id_start, id_end))
rows = cursor.fetchall()
for row in rows:
glob ......
cursor.execute(query, (id_start, id_end))

per la modalità con qui stai inserendo le variabili da ricercare ti consiglio di andare a leggere la documentazione al link : https://docs.python.org/2/library/sqlite3.html
anche se riferita a sqlite3 se non erro per mysql la sintassi per le query e la sessa che per sqlite3.
Magari se poi puoi postare quale errore ti restituisce python ......
In pratica da un print mi stampa il valore del nome del primo utente anche per altri row0.
Sicuro che i nomi nel db siano diversi per i vari row?

se provi a fare una query come questa :

cur.execute("SELECT * FROM users")

rows = cur.fetchall()

for row in rows:
    print row    
cosa ottieni?

poi prova:

cursor.execute(query, (id_start, id_end))

for row in cursor:
    print row
cosa ottieni?



--- Ultima modifica di Orsogrizzly in data 2016-02-06 22:41:07 ---

--- Ultima modifica di Orsogrizzly in data 2016-02-06 22:58:59 ---

--- Ultima modifica di Orsogrizzly in data 2016-02-06 23:13:13 ---
In pratica da un print mi stampa il valore del nome del primo utente anche per altri row0.
No, stai sbagliando strada, ma più che darti la soluzione, vorrei farti riflettere un po'.

Se tu cicli con un for il tuo rows = cursor.fetchall() per ogni "giro" effettuato avrai il tuo valore corrispondente.

Facciamo un esempio, che rende sempre l'idea. Se tu nel database hai valore1, valore2, valore3... nella colonna nome (che palesi oltretutto nella tua query), quando procedi col for ottieni tutti i valori in sequenza:
for row in rows:
    print row
valore1
valore2
valore3
...
Poi nel tuo esempio commetti degli errori, alcuni fatali:
- Ad ogni "giro" riassegni lo status di global alle variabili, assolutamente controproducente;
- Il commit, oltre a non servire a nulla in questo caso, è logicamente nella posizione sbagliata;
- Alle variabili globali attribuisci sempre lo stesso valore, cosa che darebbe a tutti le variabili solo ed unicamente l'ultimo valore.

Come ti hanno suggerito, devi sporcarti le manine e fare un po' di prove. Tralascia per ora le variabili globali e prova a capire correttamente il funzionamento del database. Il commit ad esempio, mi fa capire che non ti è bene chiaro il funzionamento della libreria.

Posta i tuoi vittoriosi risultati, siamo curiosi.

Cya


Pagina: 1



Esegui il login per scrivere una risposta.