Insert SQL

a marqué ce sujet comme résolu.

Voici ce que j'ai fais c'est bien ce que tu pensais?

1
2
3
4
5
6
7
8
9
def insertDAE(server, data):
    cursor = server.cursor()
    val = ', '.join('?' * len(data))
    query_string = 'INSERT INTO dbo.SQL#DAE_TBL VALUES (%s);' % val
    data = map(str, data)
    print(data)
    cursor.execute(query_string, *data)
    server.commit()
    server.close()

Par contre * je l'ai peut être mal utilisé, voici l'erreur renvoyé: TypeError: execute takes 1 or 2 arguments (125 given)

D'accord en effet, ça passe mieux, j'ai donc ceci:

1
2
3
4
5
6
7
8
def insertDAE(server, data):
    cursor = server.cursor()
    val = ', '.join('?' * len(data))
    query_string = 'INSERT INTO dbo.SQL#DAE_TBL VALUES (%s);' % val
    data = map(str, data)
    cursor.execute(query_string, tuple(data))
    server.commit()
    server.close()

Mais j'ai encore une erreur de typage TypeError: not all arguments converted during string formatting

Voici le code:

1
2
3
4
5
6
7
8
9
def insertDAE(server, data):
    cursor = server.cursor()
    val = ', '.join('%s' * len(data))
    print(val)
    query_string = 'INSERT INTO dbo.SQL#DAE_TBL VALUES (%s);' % val
    data = map(str, data)
    cursor.execute(query_string, tuple(data))
    server.commit()
    server.close()

Et voici l'erreur: ValueError: unsupported format character ',' (0x2c)

La source de l'erreur vient surement de la variable val, quand je l'affiche j'ai une grande chaine de caractère %, s, %, s, % normalement je devrais avoir un truc comme ça %s, %s, %s, %s

query_string = 'INSERT INTO dbo.SQL#DAE_TBL VALUES ({});'.format(val)

et sinon il y a un autre problème : les % et s sont séparés. du coup il faudrait faire : val = ", ".join(["%s"] * len(data)) En effet "%s" * 6 signifie "la chaine %s collée six fois, or ce qu'on veut c'est une liste comprenant six fois %s.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte