You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
はじめに Djangoでメモリに乗らないサイズのデータベースを扱うときに、気をつけるべきポイントをまとめます。メモリを大量に消費していつまで経っても処理が終わらなかったり、OOM Killerに殺されたりといった悲しい結末を回避できたら幸いです。 データ量としては、レコード数が数十万から数百万ぐらいで、サイズにして数GB〜十数GBぐらいのイメージです。インデックスを適切に張るといった、Django特有でないポイントは取り上げません。Djangoのバージョンは1.5系を対象にしています。 バッチ処理のDEBUGに気をつける 症状 DEBUG = Trueの場合、バッチ処理で大量のクエリを発行するとメモリを食いつぶすことがあります。 原因 実行したすべてのSQLが記録されるためです。defaultのデータベースを利用している場合は、django.db.connections['default
はじめに Djangoを使ったアプリケーションで、2つのバッチ処理用プロセスA、Bを同時に立ち上げたときに、Aのトランザクションでsave & commitした値をBでは読み取れないという問題に直面しました。 問題の箇所のソースコードはこのような感じです。 実行順 プロセスA プロセスB 1 with commit_on_success(): p = Post(id=1) p.save() 2 # saveしたデータが見える Post.objects.get(id=1) 3 with commit_on_success(): p = Post(id=2) p.save() 4 # saveしたデータが見えず例外発生 Post.objects.get(id=2) Djangoではデフォルトで自動コミットが有効なので、Aでコミットした値をBで読み取れるはずと思っていたのですが、これは間違いでし
Playdoh¶ Mozilla’s Playdoh is a web application template based on Django. Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Playdoh is simply a pre-configured Django project that adds some essential modules and middleware to meet the following goals: Enhance the security of your application and its data Achieve optimal performance in the fac
postgresにはdistinct on という構文があるそうです。知らなかったです。 djangoのドキュメントで知りました。 postgres distinct on でググるとこちらのエントリが一番上にきます。 PostgreSQL の DISTINCT ON http://www.odin.hyork.net/write/write0228.html 要するに、重複しているかどうかを判断するカラムを指定しつつ、それ以外のカラムも取得する、というわけですね。 distinctなんで重複行は省かれるんですが、distinct onに指定したカラム以外については、一番最初に見つかった行の値を返します。 なのでorder byも同時に指定します。 さてdjangoでは1.4からquerysetのdistinctメソッドにフィールド名を渡すことによってdistinct on が使えるように
はじめにというか雑談 こんにちは。gumiの畠です。 先日GREEでスターフロンティアというゲームを公開しました。 ここ2か月くらいの忙しかった日々が報われたかと思うと感慨ひとしおです。 まぁ今も修正やら調整やらで忙しいのは変わらないのですが。。。 キャッシュを自動化しよう さて、本題です。 ソーシャルアプリのようなトラフィックが高いサービスを作るときはDBアクセスを減らすことが重要になります。 Djangoにはそのための機能であるdjango.core.cacheが存在していますので、DBアクセスの結果は積極的にキャッシュしたいところです。 ですが、各モデルにいちいちキャッシュの機構を組み込むのは面倒ですし、万が一消し忘れたりすると大変です。 そこで、スターフロンティアではキャッシュする抽象モデルクラス(AbstructCachedModel)を作って、ある程度のキャッシュを自動化してい
メールを送信する。Python 標準モジュールやライブラリにもありそうだけど、Django 組み込みであるのでそれを利用する。 日本語1.4::メールの送信 — Django 1.4 documentation つかう ドキュメントのままです from django.core.mail import send_mail send_mail('Subject here', 'Here is the message.', 'from@example.com', ['to@example.com'], fail_silently=False) # もうちょっとつかいまわしやすくする message = message subject = subject # to 部分はリストかタプルで指定 email_from = "atas@hoge.com" email_to = ("noreply@hog
Pycharmでpython3.4を使ってたら、いつのまにかprint関数に「Unresolved reference 'print'」という警告がでるようになった。 Fileメニュー の「Invalidate Caches / Restart...」で解決 受かってました。 ちょっとDB設計が難しい案件があったので、基礎を勉強しなおそうと思ったのが受験した理由です。 参考書はこれ一冊。普段DB触っていて、ある程度過去問題を解いていればいけると思います。 情報処理教科書 データベーススペシャリスト 2015年版 作者: ITのプロ46,三好康之出版社/メーカー: 翔泳社発売日: 2014/09/18メディア: 単行本(ソフトカバー)この商品を含むブログ (2件) を見る 図を書く問題があるので、定規と、製図用のちょっといいシャープペンシルとか持っていくといいと思います。 amazonで人気
djangoでユーザー登録機能を簡単に追加できるプラグインdjango-registrationの使い方を調査中です。 pipからもインストールできますが、pipでインストールできる安定版バージョン0.7と、bitbucketでダウンロードできる0.8alpha-1とでは、だいぶ設定が異なるようです。 デフォルトでは次のように動作します。 ユーザー名、メールアドレス、パスワードでユーザー登録情報が送信される Userオブジェクトが生成され(この状態ではis_activeがFalse)、ユーザーに確認メールが送信される。 確認メールの中のリンクがクリックされるとそのユーザーのis_activeがTrueとなってログインを行えるようになる INSTALLED_APPSに、"django.contrib.auth"、"django.contrib.sites"、"regstration"を記載し
2012-11-25 Django で JSON.stringify された POST データを受け取る Backbone.js とか Spine はデフォルトで Content-Type: application/json & JSON.stringify されたデータを送信してくるので、Django の request.POST.get('hoge') で受け取る事ができず不便です。 Class base view のメソッドをいくつか継承して自前デコード + 分解してあげることで疑似 POST データを作ってあげるといいのかなーとおもいました。 Django の FormView は get_form_kwargs の戻り値を get_form に渡して form を生成しているので、get_form_kwargs をちょっといじります。urlencode しているのは json.l
ファイルの管理¶ This document describes Django's file access APIs for files such as those uploaded by a user. The lower level APIs are general enough that you could use them for other purposes. If you want to handle "static files" (JS, CSS, etc.), see 静的ファイル (画像、JavaScript、CSS など) を管理する. By default, Django stores files locally, using the MEDIA_ROOT and MEDIA_URL settings. The examples below assume that y
urls.py とかは随時適切に記述 models.py # -*- coding: utf-8 -*- from django.utils.translation import ugettext_lazy as _ from google.appengine.ext import db class Image(db.Model): # 画像を登録した日時 created_date = db.DateTimeProperty(auto_now_add=True) # 画像データ:バイナリ image = db.BlobProperty() # 画像サイズ imgsize = db.IntegerProperty() # 画像タイプ:mimetype imgtype = db.StringProperty() views.py # -*- coding: utf-8 -*- from dja
Mercurialなどのバージョン管理システムでブランチを使っていて、DjangoとSouthを使っている場合、Southのマイグレーションがブランチ間で衝突して、マージしないといけないことがよくある。 その際の解消手順についてメモ。 試したのはDjango1.4.1, South0.7.6 myappにモデルを追加するところから、マイグレーションが衝突するフローとマージまで。 マイグレーションの初期化 モデルがない状態でとりあえず初期化する。 $ python manage.py schemamigration myapp --initial Created 0001_initial.py. You can now apply this migration with: ./manage.py migrate myappsyncdbとmigrateを実行する。 $ python manag
やりたかったことは、指定した緯度経度(GPSから取得した現在位置)に近い場所の検索と距離の算出でした。 DjangoだとPostGIS+GeoDjangoを使えばできますが、今回はデータベースがMySQLであるため、filterでdistanceが使えませんでした。 GeoDjango Database API | Django documentation | Django いい方法がないかググっていたら、Google Developersサイト内のGoogle Maps APIに関する記事で、PHPとMySQLを使う例があり、参考になりました。 Creating a Store Locator with PHP, MySQL & Google Maps | Google Maps APIs | Google Developers このページにあるSQLを少しいじってDjangoで
DjangoのORMが実行してるSQLの見方 (とdjango-debug-toolbar のススメ) django-debug-toolbar 使おう。 以下の様な記事があった。 Djangoの発行する生SQLが見たい ForeignKeyとfilterのメモ - AtAsAtAmAtArA django.db.connection.queries を使うとよいそうです。でもこれを覚えるのはちょっと大変。 ここで django-debug-toolbar 使えばもっと楽にできるのでオススメしたい。 どうするのかというと、 django-debug-toolbar の debugsqlshell という機能を使う。 これは普段の manage.py shell とほとんど同じなんだけど、SQLが実行されたときは、そのSQLを表示してくれるというもの。 (django-debug-toolb
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く