ich habe gerade ein mächtiges Problem und komme absolut nicht weiter!
Und zwar portiere ich den Code eines größeren Programms von Perl nach Python, was an sich gut funktioniert. Jedoch stresst meine Datenbankklasse rum.
Die Klasse kann sich problemlos mit der MySQL Datenbank verbinden und Querys abfragen. INSERT und UPDATE Befehle werden auch anstandslos angenommen und ein darauf folgender SELECT Befehl spuckt die neu eingetragenen Werte auch wieder aus.
Schaue ich jetzt aber mit phpMyAdmin in die Datenbank rein, so finde ich diesen Eintrag nicht wieder! Er existiert einfach nicht.
Das gleiche Problem habe ich auch mit meiner MS SQL Datenbankklasse, die auf 'pymssql' aufbaut.
Die benötigten Zugriffsrechte existieren. Die Perl Implementation funktioniert tadellos.
Code: Alles auswählen
#!/usr/bin/python
import MySQLdb
class Database(object):
def __init__(self, username, passwd, db, host):
self.__dbh = None
self.__cursor = None
self.__result = None
self.__user = username
self.__pass = passwd
self.__db = db
self.__host = host
self.openDB()
def openDB(self):
if (self.__user != "" and self.__pass != "" and self.__db != "" and self.__host != ""):
self.__dbh = MySQLdb.connect(host=self.__host, user=self.__user, passwd=self.__pass, db=self.__db )
self.__cursor = self.__dbh.cursor()
def closeDB(self):
if (self.__dbh != None and self.__cursor != None):
self.__cursor.close()
self.__dbh.close()
def query(self, sql):
self.__result = []
self.__cursor.execute(sql)
self.__result = self.__cursor.fetchall()
self.__dbh.commit()
def getItem(self, row, col):
if (len(self.__result) > row):
if (len(self.__result[row]) > col):
return self.__result[row][col]
else:
return ""
else:
return ""
def getRows(self):
return len(self.__result)
def getCols(self):
if (self.getRows() > 0):
return len(self.__result[0])
else:
return 0
if (__name__ == "__main__"):
db = Database("user", "passwd", "database", "host")
sql = "INSERT INTO config (section, setting, value) VALUES ('test', 'test2', 'test3')"
db.query(sql)
sql = "SELECT * FROM config WHERE section = 'test' AND setting = 'test2' AND value = 'test3'"
db.query(sql)
print "Rows:", db.getRows()
print "Cols:", db.getCols()
for i in range(0,db.getRows()):
for j in range (0,db.getCols()):
print str(db.getItem(i,j))+" | ",
print ""
Vic