Hallo.
Ich möchte gerne eine Zahl in eine Sqlite Datenbank einfügen.
Das Feld ist vom Typ Numeric. Der Query sieht zb. So aus:
INSERT INTO `datenbank`(x,y,zahl) VALUES('%s','%s','%s')
alles wird ganz normal eingefügt... Nur diese blöde Zahl nicht.
Ich hab schon den gesamten Query ausgeben lassen... Die Zahl ist wirklich drin. Sqlite will sie nur irgendwie nicht haben. Das Feld ist danach einfach leer. Ich versteh das irgendwie nicht.
Hoffe ihr findet eine Lösung... Ich bin mit meinen Lösungen jedenfalls am Ende.
Gruß sprudel
String lässt sich einfach nicht in Sqlite einfügen
- sunmountain
- User
- Beiträge: 89
- Registriert: Montag 13. März 2006, 17:18
Eigentlich (bis auf ein paar Ausnahmen) juckt SQLite Deine Tabellendefinition nicht.
Vielleicht hast Du einfach die Zahl falsch formatiert ?
Vielleicht hast Du einfach die Zahl falsch formatiert ?
Es ist übrigens besser/sicherer Werte nicht selbst in SQL-Befehle einzufügen, sondern das dem Datenbankmodul zu überlassen. Das Kommando sähe für SQLite so aus:
Die Argumente übergibt man als Tupel als zweites Argument der `execute()`-Methode.
Code: Alles auswählen
'INSERT INTO datenbank (x, y, zahl) VALUES (?, ?, ?)'
Also die Tabelle ist so aufgebaut:
CREATE TABLE vokabeln (lastlearn NUMERIC, cat TEXT, tense TEXT, type TEXT, bmk TEXT, fach TEXT, falsch NUMERIC, id INTEGER PRIMARY KEY, richtig NUMERIC, text1 TEXT, lang1 TEXT, text2 TEXT, lang2 TEXT);
und so tu ich in die Datenbank schreiben:
DB.execute("INSERT INTO vokabeln (id,lang1,text1,lang2,text2,fach,type,tense,bmk,cat) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" % (id,lang1,text1,lang2,text2,fach,type,tense,bmk,cat) )
CREATE TABLE vokabeln (lastlearn NUMERIC, cat TEXT, tense TEXT, type TEXT, bmk TEXT, fach TEXT, falsch NUMERIC, id INTEGER PRIMARY KEY, richtig NUMERIC, text1 TEXT, lang1 TEXT, text2 TEXT, lang2 TEXT);
und so tu ich in die Datenbank schreiben:
DB.execute("INSERT INTO vokabeln (id,lang1,text1,lang2,text2,fach,type,tense,bmk,cat) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" % (id,lang1,text1,lang2,text2,fach,type,tense,bmk,cat) )
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Besser (sicherer, lesbarer) so:
Code: Alles auswählen
DB.execute("INSERT INTO vokabeln (id, lang1, text1, lang2, text2, fach, type, tense, bmk, cat) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", (id, lang1, text1, lang2, text2, fach, type, tense, bmk, cat))
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice