Seite 1 von 1

[solved] Warum werden daten nicht gespeicher?

Verfasst: Montag 15. Juni 2009, 14:24
von The Spirit
Hi.
Ich bin neu bei Datenbanken.
Bin dabei mir eine Datenbank aufzubauen in mysql.
Jetzt will ich was in die Datenbank schreiben.
Dazu nutze ich folgende Zeilen

Code: Alles auswählen

import MySQLdb
from database import database

db = database(name = 'db')

db.connect('127.0.0.1', 'test', 'test', 'test')
c = db.cursor


c.execute ("""
	INSERT INTO main (ID, name, rasse, date
	VALUES (NULL, 'hasso', 'hund, 06/15/09)
	""")

c.execute("SELECT * FROM main m;")
row = c.fetchall()
for i in row:
	for t in i:
		print t,
	print '\n'

c.close()
db.commit()
db.close()
Meine classe database sieht dabei wie folgt aus (wird langsam gefüllt):

Code: Alles auswählen

class database:
	def __init__(self, name):
		self.name = name
		self.pointer = None
		self.cursor = None
	
	def connect(self, host, user, pw, db):
		self.pointer = MySQLdb.connect(host,user,pw,db) 
		self.cursor = self.pointer.cursor()

	def commit(self):
		self.commit = MySQLdb.connection.commit
		
	def close(self):
		self.close = MySQLdb.connection.close	

	def write(self):
		self.write()
Wenn ich das jetzt mehrmals ausführe, zählt er zwar die id hoch, aber das alte bleibt nicht in der Datenbank
Die Ausgabe ist immer die gleiche, nämlich:

Code: Alles auswählen

62 hasso hund 2009-06-15
Führe ich das script wieder aus, dann bleibt die ausgabe gleiche (nur eine Zeile). Nur die id ändert sich in 63.
Was mache ich da falsch bzw. warum bleibt mein alter eintrag nicht drin?
Thx

Verfasst: Montag 15. Juni 2009, 15:25
von Hyperion
Vielleicht musst Du die Daten erst committen? Riecht irgend wie danach ...

Ich würde an Deiner Stelle aber nicht versuchen, das Rad neu zu erfinden. Nutze doch einfach einen ORM zum Kapseln, etwa SQLAlchemy oder den deklarativen Aufsatz Exlixir darauf.

Verfasst: Montag 15. Juni 2009, 15:56
von The Spirit
danke für den tip.
werd ich mir mal ansehen

Verfasst: Montag 15. Juni 2009, 18:35
von Leonidas
Statt nur die Funktionen aufzuführen solltest du auch überlegen, sie tatsächlich auch *aufzurufen*.

Verfasst: Dienstag 16. Juni 2009, 08:41
von The Spirit
oh danke.
peinlich peinlich :oops: