Seite 1 von 1

Seltsames Verhalten bei Zugriff auf MySQL mittels mysqldb

Verfasst: Donnerstag 14. Juni 2012, 18:27
von PhiThi
Liebe ForenUser,

Ich stehe vor folgendem Problem:

Ich will Daten von User welche auf einen StreamServer zugreifen in einer MySQL Datenbank loggen. Die Datenbank läuft zZ auf dem gleichem Rechner wie der Server. Ich habe zum Testen folgendes kurze Skript geschrieben:

Code: Alles auswählen

import MySQLdb

def test():
    conn = MySQLdb.connect (user = "root",
                        host = "localhost",
                        passwd = "*******",
                        db = "kompassS")

 
    ip='127.0.0.1'
    cursor = conn.cursor ()
    cursor.execute("INSERT INTO `server_log`(`status`, `ip`, `title`) VALUES ('v',%s,'NANA')",ip) 
    conn.commit()
    cursor.close ()

test()
Der Zugriff funktioniert, ich sehe den Eintrag in der Datenbank, alles ok.

Nun das Problem. Mein StreamServer sammelt Daten vom User und ruft am Ende des Streams eine Funktion (write_to_log()) in einem von mir gschriebenen Modul auf, welche genau so aussieht wie die eben beschriebene:

Code: Alles auswählen

import MySQLdb
import threading
from _threading_local import local

mydata = threading.local()
flag = threading.Event()

def write_to_log():
    
        # Verbindung zur Datenbank aufbauen
        conn = MySQLdb.connect (user = "root",
                        host = "localhost",
                        passwd = "mysql",
                        db = "kompassS")

        cursor = conn.cursor ()
        # Test: Schreiben in Tabelle
        cursor.execute("INSERT INTO `server_log`(`status`, `ip`, `title`) VALUES ('v',1234,'NANA')") 
              
        # Verbindung beenden
        cursor.close ()
        conn.commit        
        conn.close ()


        
        

Nun erscheint kein Einrtag mehr in der Datenbank. Die Funktion wird aufgerufen, dies habe ich mittels print Ausgaben überprüft. Es wird jedoch etwas in der Datenbank gemacht, weil wenn ich danach wieder mein oberesTestskript ausführe, sehe ich dass sich der PRIMARYKEY erhöht hat. Also zB:
Ausführen des Testskripts:
=> Eintrag in die Datenbank gelingt, PRIMARYKEY= 1
Ausführen von Server und Modulfunktion
=> Kein EIntrag wird gemacht!
Ausführen des Testskripts:
=> Eintrag in die Datenbank gelingt, PRIMARYKEY= 3

Ich hoffe ihr versteht das Problem und dass es vielleicht jemanden gibt der es mir erklären kann!

Vielen Dank!

Re: Seltsames Verhalten bei Zugriff auf MySQL mittels mysqld

Verfasst: Donnerstag 14. Juni 2012, 18:33
von /me
PhiThi hat geschrieben:

Code: Alles auswählen

        conn.commit

Nun erscheint kein Einrtag mehr in der Datenbank.
conn.commit ruft nicht die Funktion auf sondern liefert die Funktion als solche. Du brauchst conn.commit().

Re: Seltsames Verhalten bei Zugriff auf MySQL mittels mysqld

Verfasst: Donnerstag 14. Juni 2012, 21:42
von PhiThi
ahh... ich hoffe jetzt wirklich dass das mein Problem war... leider selten dumm die Klammern zu vergessen wo ich sie ja im Test Skript geschrieben hab... Vielen Dank schonmal, probiere morgen gleich aus!