1
Ich habe ein bisschen Probleme bei der Parametrisierung einer SQL-Abfrage mit Python. Weiß nicht genau, warum dieser Fehler passiert ... Wenn das Tupel zwei Mitglieder hat und ich zwei Parameter im SQL verwende, wie bekomme ich einen Fehler von einem Fehler?Parametrisierung einer Abfrage in Postgres mit Python
Fehlermeldung:
File "...\app.py", line 27, in main
rows = User.daily_users_by_pool_name('2016-08-01', '2016-08-02')
File "...\user.py", line 48, in daily_users_by_pool_name
cursor.execute(query, (start_date, end_date))
IndexError: tuple index out of range
Aufruf Funktion in Haupt:
rows = User.daily_users_by_pool_name('2016-08-01', '2016-08-02')
Methode in der Klasse Benutzer:
from database import ConnectionFromPool
from datetime import datetime
import pandas as pd
import numpy as np
import psycopg2
...
@classmethod #static
def daily_users_by_pool_name(cls, start_date, end_date):
'''returns a Pandas.DataFrame of results'''
query = """
Select foo.dos::date, foo.cust_id
from foo f
join customer c on f.id = c.id
where foo.dos >= %s::DATE
and foo.dos < %s::DATE
and c.cust_name ilike '%_bar'
and c.baz not ilike 'test%' """
with ConnectionFromPool() as cursor:
cursor.execute(query, (start_date, end_date))
return pd.DataFrame(cursor.fetchall(), columns=['foo', 'cust_id'])
ist das sicher von SQL-Injektion? – StillLearningToCode
@StillLearningToCode Ich verstehe nicht, wie würde das SQL-Injektion ermöglichen ... –