[solved] Warum werden daten nicht gespeicher?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

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
Zuletzt geändert von The Spirit am Montag 22. Juni 2009, 08:58, insgesamt 1-mal geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

danke für den tip.
werd ich mir mal ansehen
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Statt nur die Funktionen aufzuführen solltest du auch überlegen, sie tatsächlich auch *aufzurufen*.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

oh danke.
peinlich peinlich :oops:
Antworten