Ich habe eine SQLlite3 Datenbank, in der ich local auf meinem Rechner einige Daten verwalten möchte.
In diesen kommen Umlaute vor, und da ist mein Problem.
Ich habe schon folgende Zeile in mein Script hinzugefügt:
Code: Alles auswählen
# -*- coding: iso-8859-1 -*-
Code: Alles auswählen
print "Zähler"
So, nun lese ich aber eine Textdatei aus, prüfe deren Zeile auf Doppelinhalt und speichere diese danach in die DB.
In der Datenbank sind die Umlaute schon "kaputt" ( Dreiecke mit ? )
Wenn ich mir die Daten ausgeben lasse, dann werden diese "kaputten" Umlaute als \xf oder so ähnlich dargestellt.
Meine Fragen lauten:
1. Wie kann man das Charset von der DB auf UFT-8 stellen? Query?
2. Wo könnte sonst noch mein Fehler liegen?
Code:
Code: Alles auswählen
con= m.connect("emails.db")
con.text_factory = str
c=con.cursor()
...
def check_double(f):
print "[*]Reading and Checking file"
valid=[]
for line in f:
line = line.strip()
if not line in valid:
valid.append(line)
else:
pass
valid.sort()
print "[*]Reading and Checking file finished"
return valid
...
def insert_none():
file_name=raw_input("File to read: ")
file=open(file_name,"r")
count=0
zeilelist=check_double(file)
print "[*]Starting to fill Database"
for line in zeilelist:
line=line.strip()
count=count+1
try:
c.execute("INSERT INTO zeile (zeile,md5,clear) VALUES('"+line+"','','')")
print "[%d]Inserted" %count
except m.Error:
print "[%d]Passed" %count
pass
print "[*]Done %d zeilen" % count
con.commit()
...
def manuell():
sql=raw_input("Query: ") """ z.B. select * from zeile """
try:
c.execute(sql)
for row in c:
print row
except m.Error as err:
print err
pass
con.commit()