0
votes

Comment supprimer les virgules d'une instruction SELECT

J'ai le code suivant

for item in lesson:
            result = connection.execute("SELECT bookingID FROM Booking WHERE lessonBooked = ? AND dateBooked = ? AND username = ?",([item,now1,self.username]))
            result = result.fetchall()
            if(len(result) > 0):
                for item2 in result:
                    print (item2)
                    result2 = connection.execute("SELECT roomNO FROM BookedRoom WHERE bookingID = ?",([item2]))
                    result2 = result2.fetchall()
                    print (result2)

La ligne print item2 sort: (39,) (43,) (48,) (49,) Le code se bloque ensuite lorsque j'ajoute les 3 dernières lignes. La sortie de item2 est attendue mais existe-t-il un moyen de supprimer la virgule, car je soupçonne que les virgules sont à l'origine du problème car la liste item2 est ensuite utilisée pour sélectionner dans la table BookedRoom.


1 commentaires

Les virgules ne sont pas vraiment «là». Ils indiquent simplement que les valeurs sont des tuples 1. Cela pourrait être la cause du problème, si vous essayez d'utiliser un tuple comme entier. Veuillez fournir le traçage complet de l'exception que vous obtenez.


3 Réponses :


1
votes

fetchall renvoie une séquence de séquences (généralement une liste de tuples), peu importe si elle renvoie une ou plusieurs lignes, ni si vous sélectionnez un ou plusieurs attributs. Vous pouvez donc utiliser item2 [0] ou plus simplement utiliser directement la séquence:

result2 = connection.execute("SELECT roomNO FROM BookedRoom WHERE bookingID = ?", item2)


0 commentaires

1
votes

Essayez ceci pour votre deuxième ligne d'exécution:

result2 = connection.execute("SELECT roomNO FROM BookedRoom WHERE bookingID = ?",([item2[0]]))


0 commentaires

0
votes

Si la fonction d'impression imprime une chaîne, essayez ce code:

result2 = connection.execute("SELECT roomNO FROM BookedRoom WHERE bookingID = ?",([item2[0]]))

Cela ne prendra pas en compte le dernier caractère de la chaîne.

Ou vous pouvez essayer ceci: p>

for item in lesson:
            result = connection.execute("SELECT bookingID FROM Booking WHERE lessonBooked = ? AND dateBooked = ? AND username = ?",([item,now1,self.username]))
            result = result.fetchall()
            if(len(result) > 0):
                for item2 in result:
                    print (item2[:-1])
                    result2 = connection.execute("SELECT roomNO FROM BookedRoom WHERE bookingID = ?",(item2[:-1]))
                    result2 = result2.fetchall()
                    print (result2)


0 commentaires