Lorsque j'ai essayé d'ajouter des données à la base de données en utilisant sqlite3 en python, j'ai obtenu "Erreur opérationnelle: aucune colonne de ce type: Aucune". De la conclusion, il semble que la grammaire était inappropriée.
python 3.7 sqlite 3.30.0
Créez une base de données simple pour reproduire l'erreur. Supposons que la table des exemples a une valeur de colonne de type entier. Stockez la valeur de la variable x créée dans python en tant que valeur.
import sqlite3
db_path="test.sqlite3"
con=sqlite3.connect(db_path)
c=con.cursor()
x=1
sql="insert into examples(value) values({0})".format(x)
c.execute(sql)
con.commit()
con.close()
Aucune erreur ne se produit lorsque x = 1. Mais si x = Aucun
#~~~Abréviation~~~~
x=None
sql="insert into examples(value) values({0})".format(x)
c.execute(sql)
#~~~Abréviation~~~~
OperationalError: no such column: None
Le problème est que j'ai utilisé .format (), donc "None" est devenu une chaîne. J'ai remarqué que c'était une erreur stupide, mais j'ai mangé beaucoup de temps ... Pour être correct, écrivez comme suit. Cela a également été recommandé dans Official.
#~~~Abréviation~~~~
x=None
sql="insert into examples(value) values(?)"
c.execute(sql, [x])
#~~~Abréviation~~~~
Soyez prudent lorsque vous intégrez des variables python dans des requêtes SQL.
Recommended Posts