python + sqlite3で"OperationalError: no such column: "
現象
pythonでsqlite3を使ってデータベースにデータを追加しようとしたら"OperationalError: no such column: None"が出た。
以下のコードで再現する。examplesテーブルにinteger型のカラムvalueがあるとする。valueとしてpython内部で作った変数xの値を格納する。
環境は python 3.7 sqlite 3.30.0
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()
x=1などは問題ない。しかし、x=Noneとすると、
OperationalError: no such column: None
となってしまう。
原因
.format()を使ったため、"None"が文字列になってしまったこと。正しくは次のように書く。公式でもこちらが推奨されていた。
#~~~略~~~~
x=None
sql="insert into examples(value) values(?)"
c.execute(sql, [x])
#~~~略~~~~
最新記事
すべて表示概要 pythonでデータ解析を行っている。解析自体はpandasを用いて行い、最終結果はpandas.DataFrameの形式で保持されている。 この結果を他のアプリケーションで利用するため、json形式でファイル出力したい。 やり方 1...
現象 raspberry piでfirestoreをimportしようとするとタイトルのエラーが発生。 from from firebase_admin import firestore ImportError: Failed to import the Cloud...
概要 フィッティングを行いたい場合、pythonならばscipy.optimize.leastsqなどでできます。 しかし、フィッティングを行う場合、フィッティングパラメータに条件を付けたい場合も多々あります。 例えば、下記のようにパラメータa、bは共に正の範囲で最適な値を...
Comentários