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.
sprudel
User
Beiträge: 245
Registriert: Donnerstag 8. März 2007, 17:12

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

Beitragvon sprudel » Sonntag 22. April 2007, 23:02

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

Beitragvon mitsuhiko » Montag 23. April 2007, 06:03

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

Vielleicht ist Zahl falsch formatiert ?

Beitragvon sunmountain » Montag 23. April 2007, 07:54

Eigentlich (bis auf ein paar Ausnahmen) juckt SQLite Deine Tabellendefinition nicht.
Vielleicht hast Du einfach die Zahl falsch formatiert ?
BlackJack

Beitragvon BlackJack » Montag 23. April 2007, 09:39

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: 245
Registriert: Donnerstag 8. März 2007, 17:12

Beitragvon sprudel » Montag 23. April 2007, 11:10

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) )
rafael
User
Beiträge: 189
Registriert: Mittwoch 26. Juli 2006, 16:13

Beitragvon rafael » Montag 23. April 2007, 13:01

Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 28. April 2007, 18:33

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 Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder