0

申し訳ありませんが、web2pyのマニュアルの説明が少しわかりません。

例として、app1とapp2が与えられます

app1に構築したデータベースをapp2で共有したい

したがって、app2 / models / db.pyファイルを次のように変更しますか?db = DAL('sqlite://storage.sqlite',migrate='false')?

他のすべてのmyModel.pyファイルもapp2/modelsディレクトリに含めますか?

データベースがapp1/databases /にある場合、app2は正しいデータベースファイルを見つける方法をどのように知っていますか?

このスレッドは質問に答え始めますが、共有データベースがどこにあるかを定義する方法がまだわかりません。

4

2 に答える 2

1

現在これをテストすることはできませんが、答えは次のようになります。

  • DAL のフォルダーをオーバーライドできます。

    したがって、両方のアプリが同じファイルを指す必要があります。

    (ドキュメントとこのスレッドを参照してください)。

.

db = DAL('sqlite://storage.sqlite',folder='path/to/app/databases')
  • はい、両方のアプリにもモデルファイルが必要です。そうしないと、アプリはデータベースにアクセスする方法を知りません。
于 2012-11-26T17:08:07.907 に答える
1

DAL(..., migrate=False)各テーブルのデフォルト値を設定するだけであることに注意してください。呼び出しに独自の明示的な引数が含まれているmigrateテーブルの移行ステータスには影響しません。(個々の呼び出しに関係なく) db 接続全体の移行を完全に無効にする場合は、代わりに次を使用します。define_table()migratedefine_table()

DAL(..., migrate_enabled=False)

また、モデル ファイルを単純にコピーするのではなく、アプリケーション間でモデル定義を共有するには、定義をモジュール内の関数またはクラスに配置してから、モジュールをインポートします。もう 1 つのオプションは、auto_importを使用することです。

DAL(..., auto_import=True)

はフィールド名とタイプをインポートしますauto_importが、バリデーターやデフォルトなどの DAL 固有の属性は含まれないため、その使用法は多少制限されることに注意してください。

于 2012-11-26T23:59:49.273 に答える