sql >> Database >  >> RDS >> Mysql

Is er een veilige manier om databasenamen in MySQL-query's te parametriseren?

Een databasenaam (noch kolom- of tabelnamen) zijn geen gegevenswaarden en zijn dus geen geschikt gebruik van tijdelijke aanduidingen. dit willen doen is meestal een slecht teken; alleen de DBA zou een create database moeten kunnen uitgeven , aangezien hiervoor een aantal aanzienlijke privileges vereist zijn. De meeste toepassingen vereisen dat de DBA de aangemaakte database uitgeeft en vervolgens de aangemaakte database als parameter gebruikt om te gebruiken in de argumenten voor dbapi.Connection.

Als je zeker weet dat je dit nodig hebt, je vertrouwt de bron van de invoer en je hebt de invoer gecontroleerd op ongeldige tekens, dan zou je de vervanging gewoon in python doen, zoiets als:

def createDB(dbConn, dbName):
    c = dbConn.cursor()
    query = """CREATE DATABASE %s;""" % dbName
    c.execute(query)


  1. De beste manier om de eerste en laatste dag van vorige maand te krijgen?

  2. Geen SQL-impasse door ontwerp - enige coderingspatronen?

  3. Is er een Max-functie in SQL Server die twee waarden aanneemt, zoals Math.Max ​​in .NET?

  4. Combineer meerdere onderliggende rijen in één rij MYSQL