おおたにです。
気になっていても時間がなくて放置していました。sqliteは割といい加減なので
気を付けないと他のDBにしたときに困りますね。
さて、Postgresでテーブルの作成に失敗することがあるという問題は、model.pyに
soClasses = ("table1", "table2")
のようにテーブルの作成順を指定する必要があるということですね。
調べてもらってありがとうございます。
因みに余談ですが、テーブルの作成順はtg-admin sql sqlで見る限りだとASCII
ソートされているような印象があります。
Atsushi Shibata wrote:
> 柴田です。
> やっばり気になったので,さらに調べてみました。
>
> tg-admin sql createで,実際にテーブルを作っているのはSQLObjectのようで
> す。
>
> http://svn.colorstudy.com/SQLObject/trunk/sqlobject/manager/command.py
>
> にあるコードで処理を行っています。ざっと見たところ,
>
> 1) モジュールを指定して,モジュールのファイル自体,あるいはその下の階層
> をos.path.walkを使ってスキャン,Pythonのファイルを読み込む
> 2) soClassesというシーケンス(リスト,またはタプル)を探す。あったら,そこ
> にあるクラスを元にテーブルを作ろうとする
> 3) なかったら,モジュールをdirしてアトリビュートを総なめ,クラスを見つけ
> 出してテーブルを作成する
>
> 3)でクラスを見つけ出す場合,dirで帰ってくるのはハッシュのキーですので,
> 順番が不定になります。このため,リレーションが張ってあって依存関係のある
> テーブルの生成に失敗する場合があるようです。
>
> soClassesというリスト(またはタプル)をmodelに定義すると,テーブル生成の順
> 番をコントロールできます。私の場合は,この方法で順番を指定したところ,
> tg-admin sql createで問題なくテーブルを作成できました。TG_Userなども,
> soClassesに指定することで作成してくれるようになりました。
>
> MLの以下のスレッド(英文です)が参考になるかも知れません。
>
> http://groups.google.com/group/turbogears/browse_thread/thread/8a06649c2e375e24/56191266e7cd6e8a
>
> ちょっと安心しました:-)。
>
> 取り急ぎ。。。
>
> ----------------------------------------
> Atsushi Shibata (Webcore Corp.)
> [EMAIL PROTECTED]
> http://www.webcore.co.jp/
> ----------------------------------------
>
> >
--~--~---------~--~----~------------~-------~--~----~
これは、お客様が次の Google グループに申し込まれたことを確認するメッセー
ジです。 Google Groups "turbogears-ja" group.
To post to this group, send email to [email protected]
このグループから退会するには、次へメールをお送りください。 [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/turbogears-ja
-~----------~----~----~----~------~----~------~--~---