0
votes

Comment filtrer la sortie SQLite

Il y a mon code xxx

comme vous le voyez se connecte à dB, sélectionne une colonne et l'attrape en résultat Au fait, il y a 4 lignes dedans, 1er et 4ème sont nuls Lorsque j'imprime le résultat, cela me donne ce xxx

Pourquoi y a-t-il des supports avant et après chaque élément; sont des éléments de support aussi; Comment puis-je vous débarrasser d'eux ne laissant que «aucun et 'd'utile

la sortie souhaitée est xxx


3 commentaires

Quelle est la sortie souhaitée? Pouvez-vous modifier la question pour montrer que s'il vous plaît.


@aws_apprentice édité


fetchall () renvoie une liste => [résultat1, résultat2, ..., résultat]. Chaque résultat peut être composé de multiples colonnes (vous avez sélectionnée juste une) => (colonne1, colonne2, ....)


3 Réponses :


0
votes

Si vous avez toujours besoin d'obtenir le premier élément de chaque tuple (singleton) dans votre liste, la méthode "universelle": xxx pré>

si vous voulez quelque chose d'un peu plus pythonique, alors vous peut utiliser Python's compréhension de la liste : p>

outputs = [first_element for (first_element, ) in inputs]


0 commentaires

0
votes

Vous pouvez également utiliser iTerTools code >

from itertools import chain

list(chain.from_iterable(result))

[None, 'useful', 'useful', None]


0 commentaires

0
votes

Eh bien, si la base de données peut être importante, elle peut être sous-optimale de créer d'abord une liste de 1-tuples à la convertir en une liste de valeurs. La documentation Python pour SQLite3 annonce d'utiliser fetchmany code> avec sa valeur par défaut pour la taille des performances optimales.

La liste finale pourrait être construite de cette manière: p>

def chunks(cursor):
    while True:
        chunk = c.fetchmany()
        if len(chunk) == 0: return
        yield chunk

...
result = [row[0] for chunk in chunks(c) for row in chunk]


0 commentaires