sql >> Database teknologi >  >> RDS >> Mysql

Er der nogen sikker måde at parametrere databasenavne på i MySQL-forespørgsler?

Et databasenavn (og heller ikke kolonne- eller tabelnavne) er ikke dataværdier og er derfor ikke en passende brug af pladsholdere. at ville gøre dette er normalt et dårligt tegn; kun DBA'en skal kunne udstede en create database , da det kræver nogle betydelige privilegier. De fleste applikationer kræver, at DBA udsteder oprettelsesdatabasen, og derefter tager den oprettede database som en parameter, der skal bruges i argumenterne til dbapi.Connection.

Hvis du er sikker på, at du har brug for dette, stoler du på kilden til input, og du har kontrolleret inputtet for ugyldige tegn, ville du bare lave substitutionen i python, noget som:

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


  1. Postgres og indekser på fremmednøgler og primærnøgler

  2. Du kan ikke angive måltabellen 'NAME' til opdatering i FROM-klausulen

  3. Sådan ændres en kolonne fra Null til Ikke Null i SQL Server

  4. Hvorfor QMYSQL driver ikke indlæst i QT5.2?