sql >> Database >  >> RDS >> PostgreSQL

Hoe kan ik mijn Python F-string in mijn query repareren om niet kwetsbaar te zijn voor SQL-injecties?

Hier leest u hoe u een dynamische query kunt opschonen met behulp van een python-lus bij het ophalen van gegevens!

houd er rekening mee dat mijn functie get_dict_resultset wordt gebruikt om verbinding te maken met de dB, gegevens op te halen en op te slaan in een python-woordenboek.

def get_dict_resultset(query, param):
    cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
    cur.execute(query, param)
    ans =cur.fetchall()
    dict_result = []
    for row in ans:
        dict_result.append(dict(row))
    return dict_result

Ik heb param toegevoegd als argument in de functie en cur.execute .

for stock in symbols:
    stock_info[stock] = get_dict_resultset("SELECT 
                                            date, close          
                                            FROM security_price 
                                            WHERE 
                                            security_price.id=%s;", [stock])

Zo heb ik mijn code veilig bewerkt om mijn gebruikersinvoer te zuiveren en mijn dB te beschermen




  1. Escape ampersand in PL/SQL Developer

  2. SQL Server ontbrekende index

  3. Hoe Django QuerySet te schrijven om UNIX_TIMESTAMP van een DateTimeField te krijgen?

  4. MySQL laat gebruikers niet inloggen:fout 1524