|
|
業務報告
業務報告部屋を作ってみました。
>>132 あ、書き方がまずまずでした #これは、test.gdb 内の imgid にセットされてます。 #imgid integer NOT NULL PRIMARY KEY,としてます。 えっとプライマリキーにセットする値を今はselect Max(ID) from xxxみたいにして取り出していると思うのですがジェネレータと トリガーをつかうとジェネレータでユニークな番号を作成して トリガーで自動的にデータ挿入されたときプライマリキーに値を セットできるようFireBirdだと組めます。というようなことを 書きたかったのです。 MS SQL ServerのIdentity機能みたいなものの実装ができる、と 言う意味です。(MS SQL Server知らなければなんのこっちゃですけど) #説明下手だー
>>130 ソース見てないです。 少し覗いた。 どうも、segment_size に DA の方が対応していないみたいです。 で、多分 64Kbyte 以上は無理かも知れない。 ちなみに test.gdb は segment_size 200 をセットしています。 pre4が、 def excute(self, sql, params=()) となっていて、params=()が、ミソみたい。 DA は、excute(src) と呼出しているので、params は()のままで何もしないみたいです。 () となっているので、function をかくのだろうが、はて? kinterbasdb-3.1_pre4 内で、サンプル探したが、なさそう。 kinterbasdbDA がアップデートされたら、対応しそうな感じ? と言う事は当面はサンプルコードが必要ですね(ちょっと嬉しい) >>131 うーん、Firebird 勉強しなきゃいかんなあ。 foreign key って外部キーだよね。ふーん、これつかうのかあー。 変な方向へ走らないですみました、有難う。 >プライマリキーの作り方は これは、test.gdb 内の imgid にセットされてます。 imgid integer NOT NULL PRIMARY KEY,としてます。
>>130 ですね。 DBMSに依存しない物をつくるのだったらこのままが良いですね。 #ちなみにFireBirdでのプライマリキーの作り方は #件のデータベースLinux本に載ってます。^^;手抜き >>トリガー、ジェネレータで親Table の key で関連した子Tableを一緒に削除できるのは IB5以降では "foreign key (field1) references table2(field2) on delete cascade" みたいな文を使うことでトリガーなどでプログラムする必要がなくなりました。 これもIB,FireBird特有の機能になってまいますが、、、。
>>129 #知ってたらごめんなさい。 いや、知りませんでした。 単に、以前のソースを使いまわしただけです。 それと、別の DB を使った物を移植する場合は トリガー使ってしまうと、移植が面倒かな? # Firebird らしい物も作ってみたいとは思いますが、 # ストアドプロシージャ等も盛り込んで。python での呼び出し方など勉強しなきゃ。 # トリガー、ジェネレータで親Table の key で関連した子Tableを一緒に削除できるのは便利ですね。 >> 80Kくらいの Error え、そうなんですか?たかが、80Kで ソース見てないです。
>>126 ふーむ確かに。動作確認しました。 でもコードが読めなくてまだよくわかってないです。 Pythonコードがよくわからないので 本質と関係ないとこに反応しちゃいますがFireBirdの場合、 トリガーとジェネレータでselect max(id) from xxxとかしなく てもプライマリキーを作成可能です。 ジェネレータで作った番号はロールバックできないのが難ですが #知ってたらごめんなさい。 #ところでファイルサイズの制限かかってます?80Kくらいの ファイルを送信すると Error Type: ProgrammingError Error Value: (0, 'Length of SQL statement must be <= USHRT_MAX') などでます。 コード読めよ>Python読めない自分、勉強勉強、、、
上部 download も見難くなって来たので、 Firebird 関係は、Firebird フォルダへ移動します。
ibchatbbsVer-03.zexp を使ってみた。 http://fzug.com/ws/fzug_prog/ibchatbbsVer-03/ # 思った程速くないような??? データは、ここのデータを手抜き SQL で移動した。 上部 download/PgToIbchatbbsmovedb.zexp ---- ↑をインポートして、interbase、postgres 用のconnection_string を自分の環境へ合わせる maintbmove, subtbmove を開いて test タブで実行すると chatbbs.gdb へデータを移動できる。 少し手直ししたら、MySQL からも移動できると思います。 # PgToIbchatbbsmovedb.zexp を使うには、以下も必要 # kinterbasdb-3.1_pre4 # chatbbs.gdb
お恥ずかしい限りです。 この何日かは、なんだったのでしょう。 Firebird のBLOBは、kinterbasdb-3.1_pre4 で完全サポートされたみたいです。 TEXT型がサポートされていたので、もしやと思ってやってみたら見事に成功しました。 嬉しいやら、悲しいやら、、、 で、download/IB_BLOBに一応サンプルいれました。 IbFileLib2.zexp --- 適当な場所でインポートして下さい。 test.gdb ---- そのまま使う場合は、/tmp へ入れて下さい。 あと、ファイルタイプを判断する為 from OFS.content_types import guess_content_type を 使ってます。 zope の Products へ GlobalModules(任意)フォルダを作成します。 そのフォルダ内に __init__.py を作成します。 __init__.py に以下のように書いて下さい。 from Products.PythonScripts.Utility import allow_module allow_module('OFS.content_types.guess_content_type') Zope を再起動 これで、from OFS.content_types import guess_content_type が使えます。 # しかし、ExternalMethod を作成しないで BLOB が使える # MySQLも使えるが、サイズが 64Kbyte まで。 # BLOB を使いたかったら Firebird が簡単
何の修正もいらず無事Winで使用できました。 中神さんに修正報告をzopememoでお願いします。 わたしにメールリプライになっているのでこの一週間気になって、、。 (冗談)
|
|