Zwei SQlite Datenbanken verknüpfen

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Peter Pan hat geschrieben:Ich kann leider kein MySQL aufm Raspberry laufen lassen. Warum wisst ihr ja bestimmt. Das ist ja überhaupt auch das Problem was ich habe. Mit MySQl ist das easy. Nur die läuft ja permanent, das wäre eine zu große Resourcenverschwendung.
Naja trotzdem danke für die Tipps.
Eine Datenbank die nichts tut, verschwendet auch nichts. Das Betriebsystem bedient konkrete Resourcenanforderungen - ein vor sich hin duempelnder Prozess tut genau nix.

Und auf meinem Mac kann schon mal der Luefter loslegen, wenn Spotlight (die eingebaute Volltextsuchmaschine, basierend auf SQLite) einen Rappel bekommt & alles neu indizieren will.

Das ist also ganz sicher kein Argument dagegen. Vor allem nicht, wenn man eh schon damit kaempft, das irgendwie hinzubekommen - wenn es dir dann auch noch um Gedeih und Verderben um Resourcensparsamkeit geht, dann ist ein Raspberry PI als Aussenstelle schon eine Verschwendung vorm $HERRN - da reicht ein Arduino voellig.
Peter Pan
User
Beiträge: 8
Registriert: Mittwoch 28. Oktober 2015, 13:35

Kann mir vielleicht jemand sagen, warum ich nur jeden zweiten Wert als Ausgabe in .txt bekomme?
Finde im internet relativ wenig zu sqlite3 und python csv Export.


import sqlite3
import csv

con = None
con = sqlite3.connect ('TestDB')

cur = con.cursor ()

c=cur.execute("SELECT * FROM TB_Tabelle _1")

with open('/Desktop/Export.txt', w) as file:
for in in c:
a = c.fetchone()
csv.writer(file).writerow(a)
Sirius3
User
Beiträge: 18226
Registriert: Sonntag 21. Oktober 2012, 17:20

@Peter Pan: Du benutzt "c" sowohl als Iterator, als auch c.fetchone explizit.
Benutzeravatar
noisefloor
User
Beiträge: 4158
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

weil dein Code sehr seltsam ist :-)
Finde im internet relativ wenig zu sqlite3 und python csv Export.
Nach der Kombi suchen ist auch wenig erfolgversprechend - das eine hat mit dem anderen ja nichts zu tun.

Dein grundsätzlicher Ansatz ist aber schon korrekt:

1. SQL Querry absetzen
2. über den Cursor iterieren - in jeder Iteration erhältst du eine Zeile des Ergebnisses als Tuple
3. die Daten aus dem Tupel in die CSV-Datei schreiben.

Einfacher wäre aber: iterdump (Link)

Und ohne wenn und aber BESSER wäre eine Relationale DB mit Master-Slvae Replikation - siehe oben. Damit wäre dein Problem gelöst.

Gruß, noisefloor
BlackJack

@Peter Pan: Das hat weder etwas mit `sqlite3` noch mit `csv` zu tun sondern mit der Schleife und dem was Du in der Schleife machst. An `a` wird nur jeder zweite Datensatz gebunden weil die anderen ja schon an die Schleifenvariable gebunden werden. An der Stelle zeigst Du übrigens keinen echten Quelltext, denn ``in`` als Name geht nicht weil das ein reserviertes Schlüsselwort ist.

Was `Cursor.execute()` als Rückgabwert liefert ist nicht spezifiziert, das ist also Zufall dass das so funktioniert. Dein `c` sollte nicht existieren.
Antworten