python import csv zu sqlite
Hallo, ich bin versucht, zu importieren einer csv-Datei in eine sqlite3-Datenbank mit python tkinter.
Ich öffne die Datei mit askopenfilename dialog und übergeben Sie die Datei auf readFile-Funktion.
def csvFile(self):
f1 = askopenfilename()
self.readFile(f1)
def readFile(self, filename):
conn = sqlite3.connect('Unicommerce.db')
cur = conn.cursor()
cur.execute("""CREATE TABLE IF NOT EXISTS unicom(products varchar,channel varchar,regulatory_forms varchar,shipment varchar)""")
filename.encode('utf-8')
print "test1"
reader = csv.reader(filename)
for field in reader:
cur.execute("INSERT INTO unicom VALUES (?,?,?,?);", field)
conn.commit()
conn.close()
Bin ich immer diese Fehlermeldung.
cur.execute("INSERT INTO unicom VALUES (?,?,?,?);", field)
ProgrammingError: Incorrect number of bindings supplied. The current statement uses 4, and there are 1 supplied.
Ich habe versucht alle possoible Lösung zur Verfügung, konnte aber nicht importieren-Datei-Datenbank.
Ich habe auch versucht, versucht, Lösungen in diesen links
Importieren einer CSV-Datei in eine sqlite3-Datenbank-Tabelle mithilfe von Python
Python CSV zu SQLite
EDIT: Link zur Eingabe-Datei Input-Datei
- Dieser Fehler bedeutet, dass es nicht genug Werte in
field
passend zu Ihrem Ausdruck. Versuchen Sieprint repr(field)
vor Ihre SQL-Befehl, um zu sehen, wasfield
tatsächlich enthält. - Einfacher wäre es, wenn Sie liefern könnte einige Beispiel für Ihre Eingabe Daten!
- Es ist der Druck dieser -- ['C'] . Ich meine input-Datei. Überprüfen, Bearbeiten
- Es ist nur ein Element in der Liste aus, was Sie erwarten, es würde thourh Fehler
- Wie kann ich den Fehler beheben?
- Könnten Sie bitte post ein Beispiel der csv-Datei, die Sie verwenden und den code der Funktion
askopenfilename
? - Prüfen Sie Bearbeiten in Frage. Ich habe einen link Hinzugefügt, um die Datei unten an der Frage
- Was bedeutet askopenfilename tut ? Es sieht aus wie Sie versuchen, Adobe reader, mit dem Dateinamen der csv-wenn es will-das file-Objekt (siehe docs.python.org/2/library/csv.html#csv.reader). Sie müssen die Datei zu öffnen, bevor er es an den Leser. Versuchen
reader = csv.reader(open(filename, "r"))
- Ich bin mit tkinter für die gui. askopenfilename eine Datei öffnen-dialog, wo ich die Datei auswählen und dann übergeben es an readFile-Methode
- Danke ich benutzte open(Dateiname) und es funktionierte
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie öffnen Sie die Datei, bevor Sie Sie übergeben es an
csv.reader
. Hier ist eine grundlegende lauffähigen Beispiel, das funktioniert. Ich fügte hinzu, eine Klasse zu ermöglichen, Ihre bestehenden Methoden verwendet werden, wie er ist.execute
arbeiten können, also:cur.execute("INSERT INTO unicom VALUES (value1,value2, value3,value4);")
wovalue1..4
ist die korrekte text-Darstellung Ihrer Daten.cur.execute("INSERT INTO unicom VALUES (?, ?, ?, ?);", [value1,value2, value3,value4]
wovalue1..4
imlist
- und db-Fahrer haftet für die korrekte interpretation der wichtigsten Datentypen.Ok, denn ich kann nicht in deine Daten sehen, würde ich etwas wie folgt:
Verwenden Pandas:
JS:
Ich möchte eine Bibliothek, die ich verwendet, um zu konvertieren meiner csv in sqlite-Datenbank sehr einfach.
Ist es csv2sqlite.
Ausführen: csv2sqlite.py {csv-Datei-Pfad} {sqlite-db-Pfad} [{table-name}] im terminal.
Stellen Sie sicher, dass Ihre Datenbank hat die gleichen Spalten, die zahlen gemäß der csv-Datei.
Hoffe, es hilft.
Danke.