SQLite fügt einträge nicht hinzu.

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Hallo ich habe ein kleien SQLlite Klasse geschreiben, aber das inserst funktioniert nicht. Das ausführen des folgenden Codes liefert keinen Fehler zurück, die Daten werden aber auch nicht in die Datenbank eingefügt.

Code: Alles auswählen

import sqlite3
import time

class database:
	def __init__(self):
		con = sqlite3.connect('my.db')
		self.c = con.cursor()
	def create(self):
		self.c.execute("CREATE TABLE `files` (\
		id INTEGER PRIMARY KEY,\
		name VARCHAR(100),\
		hash VARCHAR(100),\
		public VARCHAR(3),\
		meta VARCHAR(100),\
		time INT(15),\
		ip VARCHAR(25),\
		data TEXT)")
	
	def insert_file(self, name, hash, public, meta, ip, data):
		self.c.execute("INSERT INTO files (id, name, hash, public, meta, time, ip, data) VALUES (NULL, '%s', '%s','%s', '%s', '%s', '%s', '%s')"""%(
			name, hash, public, meta, time.time(), ip, data))


	def get_file(self, name='%%', meta='%%', hash='%%'):
		self.c.execute("SELECT * FROM files WHERE `name` LIKE '%s' AND `meta` LIKE '%s' AND `hash` LIKE '%s'; "%(name, meta, hash))
		return self.c.fetchall()
		
		
#database().create()
print database(). insert_file("lol","lol","lol","lol","lol","lol")
print database().get_file(name='lol')
Vielleich fällt euch ja was dazu ein warum das nicht geht. Danke.

PS: So etwas wie commit gibt es ja bei SQLite nicht?!
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Sr4l hat geschrieben:So etwas wie commit gibt es ja bei SQLite nicht?!
Hallo Sr4l!

Doch. :P Es wird nur bei "CREATE" automatisch ausgeführt. Bei "INSERT" muss man es selber machen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

lol danke.

ich habe das commit an die Abfrage gehangen nicht an die Datenbankverbindung.

*edit*:
folgendes habe ich geändert (nur der Vollständigkeit zur Liebe) :

Code: Alles auswählen

    def __init__(self):
        self.con = sqlite3.connect('my.db')
        self.c = self.con.cursor() 

    def insert_file(self, name, hash, public, meta, ip, data):
        self.c.execute("INSERT INTO files (id, name, hash, public, meta, time, ip, data) VALUES (NULL, '%s', '%s','%s', '%s', '%s', '%s', '%s')"""%(
            name, hash, public, meta, time.time(), ip, data)) 
        self.con.commit()
Naja und ich habe self.c in self.cur umbenannt.
Bong-Jour
User
Beiträge: 54
Registriert: Donnerstag 24. Juli 2008, 13:14
Kontaktdaten:

Danke für diesen Thread

Die §$%&!! Datenbank war kurz davor mich in den Wahnsinn zu treiben... ^^
Das ist kein Hakenkreuz - Das ist das neue Python-Symbol!
Antworten