recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment utiliser des variables pour exécuter des instructions SQL en Python

<p>J'ai le code Python suivant : </p> <pre class="brush:py;toolbar:false;">cursor.execute("INSERT INTO table VALUES var1, var2, var3,") ≪/pré> <p>Où <code>var1</code> est un entier, <code>var2</code> et <code>var3</code> </p> <p>Comment puis-je écrire des noms de variables sans que Python les intègre au texte de la requête ? </p>
P粉725827686P粉725827686549 Il y a quelques jours512

répondre à tous(2)je répondrai

  • P粉781235689

    P粉7812356892023-08-22 15:40:51

    Différentes implémentations Python DB-API autorisent différents espaces réservés, vous devez donc savoir lequel vous utilisez -- par exemple (en utilisant MySQLdb) :

    cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))

    Ou (en utilisant sqlite3 de la bibliothèque standard Python) :

    cursor.execute("INSERT INTO table VALUES (?, ?, ?)", (var1, var2, var3))

    ou d'autres manières (dans VALUES之后,你可以使用(:1, :2, :3),或者使用"named styles" (:fee, :fie, :fo) 或者 (%(fee)s, %(fie)s, %(fo)s),在这种情况下,你需要将一个字典作为第二个参数传递给execute函数)。检查你正在使用的DB API模块中的paramstyleconstantes de chaîne, et consultez paramstyle sur http://www.python.org/dev/peps/pep-0249/pour toutes les façons de transmettre des paramètres !

    répondre
    0
  • P粉763662390

    P粉7636623902023-08-22 15:33:14

    cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))

    Veuillez noter que les paramètres sont transmis sous forme de tuple, (a, b, c)。如果您只传递一个参数,元组需要以逗号结尾,(a,).

    L'API de la base de données échappera et citera correctement les variables. Faites attention à ne pas utiliser d'opérateurs de formatage de chaîne (%) car

    1. Il ne permet ni évasion ni citation.
    2. Il est vulnérable aux attaques de formatage de chaîne incontrôlables telles que injection SQL.

    répondre
    0
  • Annulerrépondre