Ersetzen des Werts in allen CursorzeilenPython

Python-Programme
Anonymous
 Ersetzen des Werts in allen Cursorzeilen

Post by Anonymous »

Mit SQLite und Python 3.1 möchte ich Währungsdaten in einer HTML-Tabelle anzeigen über. eine Vorlage, die einen Cursor als Parameter akzeptiert. Daher müssen alle Währungswerte zwei Dezimalstellen haben, aber SQLite speichert sie als Float-Typ (obwohl die Struktur dezimal :-() angibt, sodass einige vor der Anzeige konvertiert werden müssen (z. B. möchte ich, dass 12.1 als 12.10 angezeigt wird).

Der Code sieht ungefähr so ​​aus (zur Veranschaulichung vereinfacht)...

Code: Select all

import sqlite3
con = sqlite3.connect("mydb")
con.row_factory = sqlite3.Row

cur = con.cursor()
cur.execute("select order_no, amount from orders where cust_id=123")

for row in cur:
row['amount'] = format(row['amount'],'%.2f')
Der letzte Befehl löst den Fehler „#builtins.TypeError: ‚sqlite3.Row‘-Objekt unterstützt keine Elementzuweisung“ aus.

Wie kann ich das Problem lösen, dass die Zeilenobjektwerte nicht geändert werden können? Könnte ich den Cursor in eine Liste von Wörterbüchern umwandeln (eines für jede Zeile, z. B. [{'order_no':1, 'amount':12.1}, {'order_no':2, 'amount':6.32}, ...]) und dann den „amount“-Wert für jedes Element formatieren? Wenn ja, wie kann ich das tun?

Gibt es bessere Lösungen, um mein Ziel zu erreichen? Wir würden uns über jede Hilfe freuen.

TIA,
Alan

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post