MySQL-Datenbank

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
KiS
User
Beiträge: 19
Registriert: Samstag 29. April 2006, 07:26

MySQL-Datenbank

Beitragvon KiS » Samstag 29. April 2006, 07:31

HI Leute :D
Ich hab ein Problem, und zwar kann ich mit Python Daten von meiner MySQL-Datenbank holen und damit dann arbeiten, allerdings möchte ich die gewonnenen Ergebnisse in die Datenbank eintragen. Kann mir wer helfen?

Und noch eine Frage hab ich. Wie funktioniert das mit einer endlos Schleife? :?:
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Samstag 29. April 2006, 08:27

Hallo,

hier ein kleines Beispiel, wie Daten in eine MySQL-Datenbank geschrieben werden:

Code: Alles auswählen

import MySQLdb

conn = MySQLdb.connect(db='Datenbank')
cursor = conn.cursor()
cursor.execute("""INSERT INTO Tabelle
                      (spalte1,spalte2,spalte3)
                       values('%s','%s','%s')"""%(wert1, wert2, wert3)

Eine Endlosschleife kannst du mit while erzeugen:

Code: Alles auswählen

from time import sleep

while True:
    print 'läuft'
    sleep(1)


Stephan
KiS
User
Beiträge: 19
Registriert: Samstag 29. April 2006, 07:26

Beitragvon KiS » Samstag 29. April 2006, 08:52

Und wie kann ich den wert in eine bestimmte Zeile eintragen?
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Samstag 29. April 2006, 09:05

Wenn du vorhandene Werte ersetzen möchtest, so geht das mit UPDATE.
Neue Datensätze werden mit INSERT zugefügt.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 29. April 2006, 10:36

Eigentlich hat das SQL-Zeug mit Python nichts zu tun. Deswegen empfehle ich dir den SQL Course.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
BlackJack

Beitragvon BlackJack » Samstag 29. April 2006, 23:02

Stephan hat geschrieben:

Code: Alles auswählen

import MySQLdb

conn = MySQLdb.connect(db='Datenbank')
cursor = conn.cursor()
cursor.execute("""INSERT INTO Tabelle
                      (spalte1,spalte2,spalte3)
                       values('%s','%s','%s')"""%(wert1, wert2, wert3)


Bitte in der letzten Zeile das Prozentzeichen durch ein Komma ersetzen. Das Einsetzen von Werten in eine SQL Anfrage sollte man dem Datenbankmodul überlassen um "SQL-Injections" zu vermeiden.
KiS
User
Beiträge: 19
Registriert: Samstag 29. April 2006, 07:26

Datenbank MySQL

Beitragvon KiS » Donnerstag 4. Mai 2006, 08:22

meine tabelle schaut wie folgt aus:
Port Status
1 ?
2 ?
3 ?
4 ?

und ich möchte jetzt nur für den Port 4 zum Beispiel im STatusfeld eine 1 haben wie mach ich das?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Datenbank MySQL

Beitragvon gerold » Donnerstag 4. Mai 2006, 09:01

KiS hat geschrieben:und ich möchte jetzt nur für den Port 4 zum Beispiel im STatusfeld eine 1 haben wie mach ich das?

Hi KiS!

Hier die SQL-Anweisung, die den Status auf 1 setzt. Das macht sie mit allen Zeilen in denen die Bedingung ``Port = 4`` zutrifft.

[code=]UPDATE
tabellenname
SET
Status = 1
WHERE
(Port = 4)[/code]
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
KiS
User
Beiträge: 19
Registriert: Samstag 29. April 2006, 07:26

Datenbank MySQL

Beitragvon KiS » Donnerstag 4. Mai 2006, 09:44

und wie sieht das aus wenn der Port eine Variable ist, die man am Anfang des Programms eingeben muss. Und mit dieser arbeitet man dann weiter?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: Datenbank MySQL

Beitragvon Leonidas » Donnerstag 4. Mai 2006, 15:55

KiS hat geschrieben:und wie sieht das aus wenn der Port eine Variable ist, die man am Anfang des Programms eingeben muss.

Gegenfrage: Warum fragst du das inzwischen dreimal?
  1. Hier, in diesem Thread
  2. Hier
  3. Hier
My god, it's full of CARs! | Leonidasvoice vs Modvoice
KiS
User
Beiträge: 19
Registriert: Samstag 29. April 2006, 07:26

Beitragvon KiS » Montag 22. Mai 2006, 11:02

Code: Alles auswählen

import MySQLdb
import os
verbindung=MySQLdb.connect(host='localhost',db='watchdog',user='root',passwd='test')
c=verbindung.cursor()
c.execute('USE watchdog')
anz=c.execute('SELECT * FROM watchdog')
print anz
x=raw_input("Bitte gewünschten Port eingeben:")
print x
anfrage1='''
SELECT Reset
FROM watchdog
WHERE Port='''+x
c.execute(anfrage1)
a=c.fetchone()
print a
while True:
    try:
        if a == ('0',):
            anfrage2='''
            SELECT IP1,IP2,IP3,IP4
            FROM watchdog
            WHERE Port='''+x
            c.execute(anfrage2)
            var1=c.fetchone()[0]
            c.execute(anfrage2)
            var2=c.fetchone()[-3]
            c.execute(anfrage2)
            var3=c.fetchone()[-2]
            c.execute(anfrage2)
            var4=c.fetchone()[-1]
            ip=var1+"."+var2+"."+var3+"."+var4
            print ip
            pi=os.system ("ping "+ip)
            print pi
            if pi == 0:
                c.execute("""UPDATE watchdog
                SET Status = '1'
                WHERE Port="""+x)
                print 'ok' #ping=0
                sleep(2)
            else:
                c.execute("""UPDATE watchdog
                SET Status = '2'
                WHERE Port="""+x)
                print 'server down' #ping=1
                #wenn der Server down ist soll er über die Serielle Schnittstelle neu gestartet werden.
            break
        else:
            c.execute("""UPDATE watchdog
            SET Status = '3', Reset = '0'
            WHERE Port="""+x)
            print 'server neustart'
            break
    except ValueError:
        print "Bitte nochmal eingeben."

folgende Frage: Ich möchte nachdem gepingt wurde möchte ich wieder auf den Anfang zu while True zurück. Nur wie geht das????
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 22. Mai 2006, 13:30

continue?! Allerdings würd ich dir auch raten das ganze in Funktionen aufzuteilen, denn im Moment ist das ziemlich unübersichtlich.
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder