sql >> Databasteknik >  >> RDS >> Mysql

Hur använder man .format()-strängen i en MySQL-sats?

Använda förberedda uttalanden (säkert sätt):

qry = """
    SELECT *
    FROM db
    WHERE run_start_date BETWEEN '%s 16:00:00' AND '%s 16:00:00'
""" # 

today = DT.date.today()
week_ago = today - DT.timedelta(days=7)
today = str(today.strftime('%Y-%m-%d'))  # Convert to string
week_ago = str(week_ago.strftime('%Y-%m-%d'))  # Convert to string

cursor.execute(qry, [today, week_ago])

Använda .format() vilket gör att du riskerar att få sql-injektioner (om du skickar användarindata till .format() t.ex.)

qry = """
    SELECT *
    FROM db
    WHERE run_start_date BETWEEN '{today} 16:00:00' AND '{week_ago} 16:00:00'
""" # Use named placeholders, nicer to read, prevents you having to repeat variables multiple time when calling .format()

today = DT.date.today()
week_ago = today - DT.timedelta(days=7)
today = str(today.strftime('%Y-%m-%d'))  # Convert to string
week_ago = str(week_ago.strftime('%Y-%m-%d'))  # Convert to string

qry = qry.format(today=today, week_ago=week_ago)
cursor.execute(qry)



  1. Hur kan jag skapa en tabell i MySQL som kallas order?

  2. Play Framework Anorm &DB inte löst

  3. BigQuery/SQL - Dela värde på specifika varianter

  4. Hur aktiverar jag MySQL-frågelogg?