Lorsque je fais une requête "SELECT" sur mon SQLite3 db, je trouve qu'il est assez compliqué de faire quelque chose d'aussi simple que d'atteindre la base de données et d'en saisir une valeur exactement comme dans mon programme. db. Je ne suis pas assez familier pour savoir si c'est comme ça ou s'il y a une meilleure façon de faire ce genre de choses.Existe-t-il une meilleure façon de travailler avec SQLite3 "SELECT" résultats de la requête dans Python3?
Le premier élément de c'est en ce qui concerne le fait que quelque chose comme ceci:
player_name = c.execute("""SELECT name FROM players WHERE pid = ?""", (pid,))
print(player_name)
donnera quelque chose comme ceci:
<sqlite3.Cursor object at 0x10c185110>
La seule façon que j'ai trouvé pour extraire le le contenu réel est en itérant sur le curseur résultant et en stockant le contenu dans une liste:
player_name = []
sql = c.execute("""SELECT name FROM players WHERE pid = ?""", (pid,))
for result in sql:
player_name.append(result)
player_name = str(player_name).replace("[", "").replace("]", "")
L'autre élément est moins problématique mais je me suis dit que je le lancerais là-bas. Il est le fait que chaque résultat de mon exemple ci-dessus, vous obteniez comme ceci:
>>> print(player_name)
('Ben Johnson',)
En fin de compte, pour obtenir la chaîne exacte de la db et dans mon programme, je le fais pour chaque requête:
>>> player_name = []
>>> sql = c.execute("""SELECT name FROM players WHERE pid = ?""", (pid,))
>>> for result in sql:
>>> player_name.append(result)
>>> player_name = str(player_name).replace("[", "").replace("]", "")
>>> player_name = str(player_name).replace("('", "").replace("',)", "")
>>>
>>> print(player_name)
Ben Johnson