Hirdetés

Új hozzászólás Aktív témák

  • Siriusb

    veterán

    Pitonikus kérdés: :)
    Adott egy táblázat, melyben szerkesztés során minden sorban egy vagy több oszlop értékét is lehet módosítani. Az adatokat egy sqlite3 adatbázisban tárolom.
    Na már most, nem írok ki minden változást azonnal az adatbázisba, hanem egy tömbben, helyesebben list-ben eltárolom az sql kifejezést és az értékeket, s csak a legvégén rögzítem az új értékeket az adatbázisban.
    Azonban mi van akkor, ha agyatlanul ugyanazon sor ugyanazon oszlopának értékét tízszer módosítom, mert bizonytalan vagyok, vagy mert tetszik a billentyűzet hangja? Ebben az esetben 9 sql kifejezés hajtódna végre teljesen feleslegesen, amikor csak egynek, a list-ben a legutolsónak kellene csak. Tehát a kérdés, mi a legpraktikusabb módja annak, hogy egy listából kitöröljem az egyforma (illetve csak egy elemében eltérő) lista elemeket, kizárólag az utolsót meghagyva. Tehát ebben:
    [
    [name1, val1, rowid1],
    [name2, val2, rowid2],
    [name1, val3, rowid1]
    ]
    az első és harmadik elem "egyforma", így az első elem törlendő.

    Nekem csak az a megoldás jut eszembe, hogy slice készül a tömbből, soronként végigmegyek és összehasonlítom az eredeti tömbbel a sort, feljegyzem az indexeket és a ciklus végén az utolsó index kivételével törlöm az összest. figyelve arra, hogy egy-egy törlés után módosul a soronkövetkező tényleges index száma.

    Egyébként más úton gondolkozva simán megoldhatnám úgy is (lévén kis mennyiségű adat), hogy az egész modelt (ListStore) visszaírom egy az egybe az adatbázisba, na de az elég csúnyácska megoldás lenne.

Új hozzászólás Aktív témák