diadia

興味があることをやってみる。自分のメモを残しておきます。

SQLAlchemy:エラー対処:sqlalchemy.exc.OperationalError: (OperationalError) unable to open database file None None

エラーメッセージ:

sqlalchemy.exc.OperationalError: (OperationalError) unable to open database file None None

 

エラーが出た背景

sqlite3のデータベースを読み込みいろいろ変更しようとする際に起きた。

エラー部分

engine = create_engine('sqlite:///mydb')

原因解消

どうやらsqlite3のデータベースを開くことが出来ないことに起因するエラーだった。sqlite3のデータベースを拡張子なしで作ってしまったことが原因だった。新たにmydb.sqliteというファイル名でデータベースを作成し、以下のコードを書いた結果エラーは出なかった。

engine = create_engine('sqlite:///mydb.sqlite')

したがってsqliteでデータベースを作成する際は拡張子をちゃんと書くのが教訓となった。

参考:sqlite3のデータベースの作り方

import sqlite3
connection = sqlite3.connect(dbpath) 
# 例えばconnectの引数として"mydb"とした場合でmydbがなければ、新たにmydbというファイルが作成される。
''' 新たにdbファイルを作る場合、拡張子がなくても作ることができる。しかし他のモジュール利用のためにも.sqlite等の拡張子をつけるべき。'''