top of page

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.DataFrameをjsonで出力

概要 pythonでデータ解析を行っている。解析自体はpandasを用いて行い、最終結果はpandas.DataFrameの形式で保持されている。 この結果を他のアプリケーションで利用するため、json形式でファイル出力したい。 やり方 1 pandas.DataFrameをdictionaryに変換 data = df.to_dict(orient='records') 2 ファイルに出力 wi

[Python] 条件付きでフィッティングをする

概要 フィッティングを行いたい場合、pythonならばscipy.optimize.leastsqなどでできます。 しかし、フィッティングを行う場合、フィッティングパラメータに条件を付けたい場合も多々あります。 例えば、下記のようにパラメータa、bは共に正の範囲で最適な値を求める、という感じです。 f(x, a, b)=a*x^2+b (a>0 and b>0) 今回はそんな手法についてご紹介しま

Comments


あなたの買い物をサポートする
アプリ Shop Plan

iphone6.5p2.png

​いつ何を買うかの計画を立てられるアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

靴を大切にしよう!靴管理アプリ SHOES_KEEP

納品:iPhone6.5①.png

靴の履いた回数、お手入れ回数を管理するアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

「後で読む」を忘れないアプリ ArticleReminder

気になった​Webサイトを登録し、指定時刻にリマインダを送れるアプリです

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png
bottom of page