はじめに ここでは,SQLAlchemyを用いてテーブル定義を行うときの方法についてまとめる. 以下,dialect(DBの種類)はmysqlとする. Charset指定 __table_args__のmysql_charsetで指定することができる. 例えば,charsetをutf8mb4に指定したければ,
SQLAlchemyの使い方を勉強してます。 前回に引き続き、チュートリアルに沿って進めてみます。 http://docs.sqlalchemy.org/en/latest/orm/tutorial.html 現在登録されているデータは以下のとおり。 sample=# select * from students; id | name | kana ----+--------------------+-------------------------- 18 | 西住 みほ | ニシズミ ミホ 19 | 武部 沙織 | タケベ サオリ 20 | 五十鈴 華 | イスズ ハナ 21 | 秋山 優花里 | アキヤマ ユカリ 22 | 冷泉 麻子 | レイゼイ マコ (5 rows) sample=# select * from
SQLAlchemyはPythonのORMの中でも比較的よく検索にヒットするように思いますが,和訳済みドキュメント*1のバージョンが古く,リレーションの張り方についてどうも自分の中でごちゃごちゃしているなと思い少し調べてみました. 注意: これはただの生物学徒が自分の興味本位で適当に本家ドキュメント*2とかを流し読みして書いた内容です.間違っていたらコメント等でお知らせください. 環境 relation()とrelationship() backrefとback_populates backrefの場合 back_populatesの場合 上記例におけるForeignKey sqlalchemy.orm.backref() lazy select, True immediate joined, False subquery dynamic noload, None raise, raise
Slick 3.0がリリースされたので、GitBucketをSlick 3.0にアップデートするべくいろいろ試してみました。 Slick 3.0は別名Reactive Slickというだけあり、これまでとはプログラミングモデルがドラスティックに変わっています。具体的に言うとDBIOActionというオブジェクトを介してデータベース操作の定義と実行が明確に分離されています。要するにMonadicなプログラミングスタイルになっているということです。 他にもReactive StreamsとかOptionサポートの強化などSlick 3.0の新機能はいろいろありますが、一番大きいのはこの点だと思います。 また、DBIOActionの実行は全面的にFutureベースになっています。Playなどと組み合わせて使用する場合、Slickを使った処理があってもAsyncResultで返すことができるように
Slick 2.0.0 documentation - 01 導入(Introduction) Permalink to Introduction — Slick 2.0.0 documentation 導入 Slickとは SlickはTypesafe社によって開発が行われている、Scalaのためのモダンなデータベースラッパーである。データベースにアクセスしながらScalaのコレクションを扱うかのようにデータを操作する事が出来る。また、SQLを直接書く事も可能である。 val limit = 10.0 // クエリはこのように書く事が出来る ( for( c <- Coffees; if c.price < limit ) yield c.name ).list // SQLを直接書いた例 sql"select name from coffees where price < $limit
概要 SlickはScalaのCollection操作っぽい記述でDBにSQLを投げることができる。 どう書くとどういったSQLが投げられるのかは普通に使ってるだけだとイマイチわからないので。よく使いそうな記述とそれによって生成されるSQLについてまとめてみる。 SQLは改行を入れたりエスケープ文字を消したりして、多少見やすくしてます。SLick1.0.1を使ってますが、ざっと見た感じでは2.0.0-RC1でもほとんど変わらない。 クエリの出力方法 実行クエリはH2に対して TRACE_LEVEL_SYSTEM_OUT=2 を指定することで、H2が受け取ったクエリを標準出力させている。DBによって多少の出力クエリの違いはあると思われる。 import scala.slick.driver.H2Driver.simple._ Database.forURL( "jdbc:h2:mem:tes
PlayFrameworkerのisobeです。Scala面白いです。 Play使い始めてしばらくDAO周りでAnormを使ってたのですがノーテーションが冗長すぎて辛いのでSlick(旧ScalaQuery)に乗り換えました。今最新のPlay2.2を使ってるのですが次期2.3では標準ORM(というかDAO)がAnormからSlickに置き変わる予定だそうです。(ってことをSlick使い始めてから知りました) ライブラリの設定周り Play2.2ではplay new直後は入らないのでjarをlib/にぶち込むか、以下のようにbuild.sbtにmvnリポジトリを指定してplay updateで自動でダウンロードされるようにします。ちなみにScala使い始めてbuild.sbtとBuild.scalaの違いに混乱したりするのですがこのエントリが超分かりやすくて、つまりsbtのDSLはBuild
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く