2011-08-03, 13:03
  #1
Medlem
Ideriks avatar
Hejsan, jag har försökt att hitta en lösning på mitt problem i 3 dagar nu. Jag har försökt att få hjälp på IRC men ingen svarar, kanske är det jag som förklarar dåligt men konstigt nog är det ingen som har påpekat det heller. Så jag prövar min lycka här istället.

Jag försöker att läsa in en tabell med värden och dess namn (värdenamn eller description) in i mitt python skript. Jag vet hur jag läser in en tabell och returnerar det som en lista, men problemet är att jag skulle vilja få en dictionary som består av värdenamn och värden (keys och values), då värdnamnet (key) är index.

Så här ser min kod för att få en lista av värden från en tabell:
Kod:
def GetPlayer(playerId):
    connection = sqlite3.connect(filePath)
    connection.row_factory = sqlite3.Row
    cursor = connection.cursor()
    data = cursor.execute("select * from myTable where playerId=?", playerId).fetchone()
    connection.close()
    return data

Som ni ser, så är det ganska svårt att plocka ut data ifrån denna lista, t.ex om jag vill ha namnet på denna spelare. Då måste jag veta vart i listan namnet ligger med hjälp av hur tabellen är strukturerad. Om jag nu skulle använda mig av en dictionary istället för en lista så skulle jag hur enkelt som helst att gör så här:
Kod:
player = GetPlayer(123)
print "Playername=%s" % player["name"]

Jag kan ju tillägga att jag vet hur man får ut värdenamnet/keyn/variabelnamnet, men jag hittar ingen smidig lösning på hur jag ska kombinera läsningen av värden och värdenamnen. Jag tycker det ser rörigt och att det borde finnas en bättre lösning på problemet. Denna metod hämtar namnet: "varName = cursor.description"

Jag hoppas denna information räcker och jag är otroligt tacksam för all hjälp jag kan få!
__________________
Senast redigerad av Iderik 2011-08-03 kl. 13:07.
Citera
2011-08-03, 14:31
  #2
Medlem
Narkotikovs avatar
Citat:
Ursprungligen postat av Iderik
Som ni ser, så är det ganska svårt att plocka ut data ifrån denna lista, t.ex om jag vill ha namnet på denna spelare. Då måste jag veta vart i listan namnet ligger med hjälp av hur tabellen är strukturerad. Om jag nu skulle använda mig av en dictionary istället för en lista så skulle jag hur enkelt som helst att gör så här:
Kod:
player = GetPlayer(123)
print "Playername=%s" % player["name"]
!

Då jag inte vet hur dina variabler i databasen ser ut så får jag anta att playerID är en int med auto_increment.

Kod:
select playerName from table where playerId=id
Citera
2011-08-03, 15:01
  #3
Medlem
Du måste skriva en egen row_factory-funktion för det ändamålet. Se python 3.x dokumentationen för exempel.
Citera
2011-08-03, 20:30
  #4
Medlem
Ideriks avatar
Citat:
Ursprungligen postat av FaderBerg
Du måste skriva en egen row_factory-funktion för det ändamålet. Se python 3.x dokumentationen för exempel.

Precis vad jag har letat efter! Jag kör en test på den imorgon, så då kommer det säkert också en rapport på hur körningen gick

Tack för hjälpen!
Citera
2011-08-04, 13:28
  #5
Medlem
Ideriks avatar
Metoden row_factory gav mig inga problem alls. Jag gick efter detta exempel: http://docs.python.org/library/sqlit...on.row_factory

Då var motivationen på topp igen och kodandet fortsätter!
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in