Ich verstehe im Grunde, dass meine SQL-Anweisung nicht ausgeführt wird, wenn es keine Variable aufgeführt ist, was ich tun möchte, ist zu überprüfen, ob ein Name existiert vor dem Schreiben (ich kann das wahrscheinlich innerhalb von SQL tun). Ich verstehe das Problem, einfach nicht, wie ich es korrigieren soll ... Ich dachte, ich würde jetzt fragen, bevor es 21:30 Uhr ist und ich bin immer noch dabei, das Problem zu untersuchen. DankIch muss eine if-Anweisung auf eine SQL-Abfrage ausführen, mit einer Variablen bereitgestellt oder leer
app.py
import sqlite3
from sqlalchemy.orm import sessionmaker
from tabledef import *
engine = create_engine('sqlite:///tutorial.db', echo=True)
Session = sessionmaker(bind=engine)
session = Session()
USERNAME = "Jas"
PASSWORD = "Booger"
EMAIL = "[email protected]"
AMOUNT = "500"
reg = User(USERNAME, PASSWORD, EMAIL, AMOUNT)
conn = sqlite3.connect("tutorial.db")
c = conn.cursor()
try:
c.execute('SELECT username from users WHERE username = "%s"' % USERNAME)
result = str(c.fetchall()).split("'")[1]
print result
except ValueError as e:
print e
Fehlermeldung
Traceback (most recent call last):
File "C:/Users/sysadmin/PycharmProjects/bet1/app3.py", line 18, in <module>
result = str(c.fetchall()).split("'")[1]
IndexError: list index out of range
Das macht Sinn und ich werde sicher sein, das zu integrieren, um die Flucht und andere unerwünschte Zeichen zu entfernen. Was ich frage ist, wenn Sie eine dieser Variablen oberhalb der c.execute leer hatten, werde ich diesen Fehler bekommen, weil die Abfrage nichts zurückgab. Ich denke, ich kann das herausfinden, ich fand SELECT EXISTS-Anweisung online, die mir die Zeit sparen würde, aber danke für die SQL-inj-Info. –
Hmm, es erscheint, wenn meine Variablen aus einem Formular kommen, die obige Methode wird immer noch für einen Benutzer Code aus dem POST injizieren. Es scheint also, dass ich noch etwas entkommen muss, richtig? Oder gibt es einen besseren Weg, um injizierten Code aus Formularen zu verhindern? –
Diese Methode sollte automatisch alles korrekt entkommen. – Lunaweaver