Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak używać ciągu .format() w instrukcji MySQL?

Korzystanie z przygotowanych stwierdzeń (bezpieczny sposób):

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])

Korzystanie z .format(), które naraża Cię na wstrzyknięcia sql (jeśli przekazujesz dane wejściowe użytkownika do .format() np.)

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql_close():5 nie jest prawidłowym zasobem MySQL-Link w C:\wamp\www\Includes\footer.php w wierszu 4

  2. Wskazówki dotyczące aktualizacji klastra Percona XtraDB do wersji 8.0

  3. SQL - klauzula WHERE z JOIN

  4. Filtrowanie i grupowanie danych z tabeli z parami klucz/wartość

  5. Używanie Like In MySQL do operacji wyszukiwania przy użyciu wzorca