Seite 1 von 1

MySQL Variable in Select abfrage einbauen

Verfasst: Sonntag 20. Juli 2008, 21:36
von reeeper
hallo alle zusammen
ich bin ziemlich neu im berreich python und versuche mir gerade für einen CS:S Server ein plugin zu schreiben.
ich hab allerdings ein kleines problem, ich hole mir eine variable aus einem server event, bekomme sie aber nicht in den query eingebaut

naja wie gesagt ich bin recht neu auf dem gebiet und würde mich über jede hilfe sehr freuen. hier der code den ich bisher habe

Code: Alles auswählen

import es
import _mysql
import MySQLdb
connection = MySQLdb.connect("127.0.0.1","root","password","playtime")
def player_activate(event_var):
    pid = (event_var['es_steamid'])
    cursor = connection.cursor()
    cursor.execute('SELECT COUNT(*) FROM steamid WHERE steamid =' ['pid'])
    for row in cursor:
        es.msg (row)
        es.msg (pid)
wie gesagt hilfe währe sehr nett :)
mfg reeeper

Verfasst: Sonntag 20. Juli 2008, 22:14
von Leonidas

Code: Alles auswählen

cursor.execute('SELECT COUNT(*) FROM steamid WHERE steamid = ?', pid) 
bzw.

Code: Alles auswählen

cursor.execute('SELECT COUNT(*) FROM steamid WHERE steamid = %s', pid) 
Ich weiß nicht welche Platzhalter MySQLdb da nimmt, aber es sollte einer von den beiden sein.

Siehe auch [wiki]Parametrisierte SQL-Queries[/wiki].

Verfasst: Montag 21. Juli 2008, 06:46
von reeeper
vielen dank für die schnelle antwort :) das zweite ist richtig danke

Verfasst: Montag 21. Juli 2008, 12:57
von reeeper
so jetzt steh ich bei meinem zweiten problem
ich hab eine if schleife

Code: Alles auswählen

 curtime = strftime('%H%M')
    if curtime > 2200:
        pkick = 1
    elif curtime < 800:
        pkick = 1
    else:
        pkick = 0
   es.msg (pkick)
mein problem ist jetzt das der erste check von curtime nicht funktioniert
sprich curtime > 2200 ist immer TRUE
egal wieviel uhr es ist
frage ist jetzt nur ist das irgend ein bug oder kommt irgendetwas nicht mit der 2200 klar weil die zu groß ist oder so ?

Verfasst: Montag 21. Juli 2008, 13:01
von Leonidas
Erstens gibt es keine if-Schleifen und zweitens ist das eine neue Frage die du in einem neuen Thread stellen solltest. Im Python-Forum gibt es keine privaten Support-Threads.

Verfasst: Montag 21. Juli 2008, 14:57
von reeeper
ok danke dann kann hier zu gemacht werden wusste nicht das das hier ungern gesehen ist *g*
mfg reeeper

Verfasst: Montag 21. Juli 2008, 15:22
von BlackJack
@reeeper: Du vergleichst eine Zeichenkette mit einer ganzen Zahl. Das gibt ein willkürliches, aber konsistentes Ergebnis, d.h. alle Zeichenketten sind entweder kleiner oder grösser als alle ganzen Zahlen.

Das ``if`` ist nicht nötig, man kann das auch so schreiben:

Code: Alles auswählen

    current_time = int(strftime('%H%M'))
    pkick = int(not (800 <= current_time <= 2200))

Verfasst: Dienstag 22. Juli 2008, 11:42
von Hyperion
Leonidas hat geschrieben:Erstens gibt es keine if-Schleifen ...
http://if-schleife.de/
Der mußte hier einfach sein :-)