String lässt sich einfach nicht in Sqlite einfügen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

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
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Zu wenig Code. Schipsel und Table Definition her :)
TUFKAB – the user formerly known as blackbird
Benutzeravatar
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 ?
BlackJack

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:

Code: Alles auswählen

'INSERT INTO datenbank (x, y, zahl) VALUES (?, ?, ?)'
Die Argumente übergibt man als Tupel als zweites Argument der `execute()`-Methode.
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

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) )
Leonidas
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
Antworten