2005/12/06
ZMySQLDA で LIMIT を使う
作成者 takanori
—
投稿日
2005年12月06日 10時57分
最終変更日時
2006年04月05日 00時48分
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
-
- ¦
- 固定リンク
- ¦
- コメント (0)
- ¦
- トラックバック (0)
- トラックバック用URL:
- http://takanory.net/takalog/424/tbping
鈴木たかのりです。とりあえず日記っぽく雑多なことを書き込んでいこうと思っています。
zope/plone関係の技術的な内容については