パーソナルツール
現在の場所: ホーム takalog ZMySQLDA で LIMIT を使う
書いた本
Plone 完全活用ガイド の Chapter 1, 2, 3, 11 を執筆しました。
plone のインストール、使い方から、機能・デザインのカスタマイズ、プロダクトの作り方まで、 plone のすべてがぎゅっと詰まっている書籍になっていると思います。
plone に興味がある人から、すでに使いこなしている方まで、ぜひ読んでみてください。
Plone 完全活用ガイドのサポートページ
« 2009July »
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
このBlogについて
鈴木たかのりです。とりあえず日記っぽく雑多なことを書き込んでいこうと思っています。 zope/plone関係の技術的な内容については http://takanory.net の方にまとめていこうと思います。 コメント・ツッコミはご自由にどうぞ。
最近のコメント
Re:Zope3の本がでてたゾウ! (takanori 07-02 12:28)
Re:Zope3の本がでてたゾウ! (関田 07-01 16:33)
Re: >手羽揚 (takanori 06-22 00:16)
Re:#10197: Fire Brigade がかなりよさげ (takanori 06-22 00:15)
>手羽揚 (しみずかわ 06-19 03:30)
最近のトラックバック
日本語にてPlone3.xを使用する便利なプロダクト (ブログ 08-31 13:52)
新しい写真集モジュール (ロバートのブログ 03-18 08:28)
新しい写真集モジュール (ロバートのブログ 03-18 08:28)
トランペットアンサンブルコンサート (人生日記 03-08 17:37)
PloneSlimboxに乗り換え♪ (pt001-blog 02-23 17:14)
カテゴリ
av (26)
books (29)
coreblog (48)
ds (22)
ferret (22)
google (33)
icecream (38)
lego (58)
mac (17)
misc (68)
moblog (266)
movie (31)
pc (42)
plone (248)
puzzle (38)
python (44)
server (60)
snowscoot (8)
software (124)
sports (32)
suidou (29)
winds (40)
 
文書操作

ZMySQLDA で LIMIT を使う

作成者 takanori投稿日 2005年12月06日 10時57分 最終変更日時 2006年04月05日 00時48分
ZMySQLDA で LIMIT を使う

MySQL に portal_catalog と同じようなデータを入れて、最新の記事一覧とかを出す仕組みを作っているんですけど、LIMIT 0, 20 とかを ZSQLMethod に書いて検索させたいと思っています。

しかし、実行させるとエラーが出てしまいます。

日本Zopeユーザ会ZSQLMethod のページに以下の記述がありました。

ZMySQLDA はバージョン2.xより「SELECT ... LIMIT n」を使うとエラーが発生します。


で、調べてみましたが実はちゃんと LIMIT を使うことが出来ます。

答えは簡単で

  • Z SQL Method の Advanced タブをクリックして、 Maximum rows to retrieve の値を 0 (default は 1000)に変更する。

ということです。

ZMySQLDA の db.py を見てみると 273行目から以下の記述があります。:

  # max_rows が未指定なら 1000
  def query(self,query_string, max_rows=1000):
     (省略)
     try:
         for qs in filter(None, map(strip,split(query_string, '\0'))):
             qtype = upper(split(qs, None, 1)[0])
             # SELECT 文で max_rows が設定されていたら LIMIT 句をつける
             if qtype == "SELECT" and max_rows:
                 qs = "%s LIMIT %d" % (qs,max_rows)

ということで、Maximum rows to retrieve に 1000 が設定されたまま LIMIT を書いて検索すると:

 SELECT * FROM table LIMIT 0, 20 LIMIT 1000

という風になって、SQL 文が構文エラーとなっていたようです。

カテゴリ
plone plone
トラックバック用URL:
http://takanory.net/takalog/424/tbping
コメントを追加

下のフォームに記入してコメントを追加できます。平文テキスト形式。

(必須)
(必須)
(必須)
(Required)
Enter the word

Powered by vine linux, python, zope, plone, coreblog