(多少の)データベースに依存しないモジュールを作成しようとしています。私はピービーモデルを定義し、データベースオブジェクトのinit
メソッドを使用して実行時にデータベースに接続したいと考えています。異なるデータベースバックエンドのpeeweeデータベースの実行時の初期化
私はSqlite接続文字列を渡すと、これは期待通りに機能します。
>>> app.db.init('sqlite://mydb.sqlite')
データベースに接続すると、すべて正常に動作します。しかし、postgresの接続文字列で同じものを試してみるとエラーになります。
>>> app.db.init('postgresql://username:[email protected]/mydb')
...
peewee.OperationalError: FATAL: database "postgresql://username:[email protected]/mydb" does not exist
個別のパラメータを使用すると、init
メソッドを接続できます。
>>> app.db.init('mydb', username='username', password='password')
しかし、これは異なるデータベースバックエンド間ではうまく翻訳されません。
誰でも接続URIを扱うためにinit
を取得する正しい方向を指摘できますか?
SqliteDatabase initの最初の引数はデータベースファイル名であり、私の最初の例はデータベースURIを使用していないため、Sqliteメソッドが動作するようになっています。 しかし、特にここの文書 - http://docs.peewee-orm.com/en/latest/peewee/database.html#connecting-using-a-database-urlここ - http://docs.peewee -orm.com/en/latest/peewee/playhouse.html#db-urlは、 'playhouse.db_url.connect'関数を使用してデータベース接続を返し、それを' db.init'に渡すことができることを示しています。それ以外はエラーも発生します。 – andy47