web-dev-qa-db-ja.com

OperationalError:(OperationalError)データベースファイルを開くことができませんなしなし

SQLAlchemyを使用してデータベースをフォーマットしようとしていますが、メタデータに対してcreate_allを実行すると、上記のエラーが発生します。ユーザーTyre77の次のパスを使用してエンジンを作成しました。

engine = create_engine('sqlite:////tyre77/OmniCloud/database.db')

ウォークスルーして、そのパスにファイル「database.db」がありますが、おそらく間違って入力しましたか?

23
Chris

OS Xのユーザーtyre77へのパスであるとおっしゃっていますが、それはsqlite:////Users/tyre77/OmniCloud/database.dbであるべきではありませんか?

また、相対パスの場合は3つのスラッシュ、絶対パスの場合は4つのスラッシュ。

38
tuomur

私はWindows8.1でも同じ問題を抱えていました。 sqlalchemyのドキュメントに基づく:

sqlite:////db_absolute_path

sqlite:///db_relative_path

(上記の2行目にはスラッシュが3つしかないことに注意してください)私の場合、相対パスを指定すると役に立ちました。

4
gandalf

Sqlite urls here のドキュメントを読んだ後、適切な数のスラッシュがあると判断しました。どうやら、リモート接続エンジンと同じパーサーを使用してパスを引き出すため、2番目と3番目のスラッシュの間にある「サーバー名」は空白のままになっています。

絶対パスを指定したい場合は、正しい方法で実行します。絶対パスを指定していることを確認してください。 3つのスラッシュで相対パスを指定できる場合がありますが、アプリの現在の作業ディレクトリを知っておく必要があります。これは、アプリを遅らせると壊れることがあります。

1
Carl F.