J'ai le code Python suivant:

cursor = connection.cursor()


a = "C6DE6778-5956-48D4-BED6-5A2A37BBB123"
SQLCommand = ("""SELECT *
                 FROM Table
                 WHERE  Table.ENUM = ?
              """, a)

results = cursor.execute(SQLCommand)

L'erreur suivante est renvoyée:

TypeError: string or integer address expected instead of tuple instance
0
Ekaterina 6 avril 2017 à 18:46

2 réponses

Meilleure réponse

SQLCommand est un tuple dans votre cas. .execute() attend une instruction sql comme premier argument. Pour corriger l'erreur, vous pouvez faire quelque chose comme ceci:

cursor = connection.cursor()
a = "C6DE6778-5956-48D4-BED6-5A2A37BBB123"
SQLCommand = """SELECT *
                 FROM Table
                 WHERE  Table.ENUM = '%s'
              """ % a
results = cursor.execute(SQLCommand)

Vous pouvez également formater votre chaîne d'instruction SQL comme ceci:

SQLCommand = """SELECT *
                     FROM Table
                     WHERE  Table.ENUM = '{}'
                  """.format(a)

Ou vous pouvez passer a comme paramètre facultatif à .execute() comme ceci:

cursor = connection.cursor()
a = "C6DE6778-5956-48D4-BED6-5A2A37BBB123"
SQLCommand = """SELECT *
                FROM Table
                WHERE  Table.ENUM = ?
            """
print(SQLCommand, a)

Vous pouvez vous référer à la documentation pour en savoir plus.

0
Satish Prakash Garg 6 avril 2017 à 18:14

La façon dont vous avez construit la commande sql est incorrecte. Passez le paramètre lorsque vous execute.

a = "C6DE6778-5956-48D4-BED6-5A2A37BBB123"
SQLCommand = """SELECT *
                 FROM Table
                 WHERE  Table.ENUM = ?
              """

results = cursor.execute(SQLCommand,(a,))
3
Vamsi Prabhala 6 avril 2017 à 16:03