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
はじめに こんにちは、 whosaysni です。 MonotaROでは開発インフラを整備するチームで働いています(この記事書いてる間にデータマーケティング部門に転属になりました)。 最近のちょっとしたツールづくりの話題をお伝えしたいと思います。 簡単にやったことをまとめると SQLAlchemyのテーブル定義を自動生成するプログラムを書いた プログラムを生成するのに抽象構文木を使った コードを整形するのに yapf を使った です。では始めましょう。 課題: Table() 呼び出しコードを生成する SQLAlchemy といえば、様々な種類の DB API に対応していて、Python コードから SQL の構文オブジェクト (SQL式) を操作して SQL を生成・実行でき、 ORM (Object-Relational Mapper) のインタフェースも備えている、データベース操作
This document summarizes a presentation on offline reinforcement learning. It discusses how offline RL can learn from fixed datasets without further interaction with the environment, which allows for fully off-policy learning. However, offline RL faces challenges from distribution shift between the behavior policy that generated the data and the learned target policy. The document reviews several
はじめに pythonからMySQLを叩く際,何を使っていますか?SQLAlchemy,Django,peeweeあたりを使っている方が多いのではないでしょうか.私は色々使ってみて結局SQLAlchemyに落ち着いていますが,何千万,何億オーダのデータになると処理が遅く非常にやっかいです. なので今回は(大きなデータにsql使うなとか高速処理にpython使うなという話は一旦置いておいて),SQLAlchemyを使ったデータ処理をいかに高速にするか,何項目かに分けて備忘録を残しておきます. SQLAlchemyを~と書いてありますが,SQLAlchemyを使ってDBにデータをINSERT,SELECTする際のpython高速化TIPSごった煮です.本当は記事を分けたほうが良いのですが,自分で見返す際にまとまっているほうが嬉しいのでこうしました. なお,今回使用するコードは全てgithubに
SQLAlchemy は Python でよく使われている O/R マッパーの一つ。 今回は、そんな SQLAlchemy が生成する SQL 文を確認するためのパッケージを作ってみたよ、という話。 具体的には、以下の sqlalchemy-profile というパッケージを作ってみた。 このエントリでは、なんでこんなものを作ったのかみたいな話をしてみる。 github.com 使った環境は次の通り。 ただし sqlalchemy-profile 自体はプラットフォームに依存せず Python 2.7, 3.3 ~ 3.6 に対応している。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.12.4 BuildVersion: 16E195 $ python --version Python 3.6.1 O/R マッパーについて O/R
リレーショナル・データベースで、あるテーブルがあるテーブルを参照するような親子関係にあるテーブルを作るとき、親側のレコードが削除されたときは、それを参照している子も一緒に削除してほしい、という場面がある。 今回は、それを Python の O/R マッパの SQLAlchemy で実現する場合の書き方について書く。 まずは何はともあれ SQLAlchemy をインストールする。 早速サンプルコードを示す。 前提として、親のテーブルを表すクラス User と、子のテーブルを表すクラス Email がある。 Email は User を参照しているため、User のレコードが削除されたときは、それに従属した Email も一緒に削除されてほしい。 尚、リレーショナル・データベースには Python に組み込みで入っている SQLite3 のオンメモリ・データベースを使った。 まずは通常のやり方
今回は Python のデータベースマイグレーションツールの Alembic について。 Alembic を使うとデータベースのスキーマをマイグレーションスクリプトにもとづいて管理できる。 マイグレーションスクリプトというのは、スキーマのバージョンを現在の状態から進める・戻すのに必要な手順が書かれたスクリプトのこと。 このブログでも、以前に Alembic でマイグレーションスクリプトを自動生成するための方法について書いたことがある。 blog.amedama.jp そして、今回はアプリケーションの実運用が始まってしまった後からスキーマの管理を Alembic に移行するための手順を書いてみる。 スケジュールが厳しいプロジェクトなんかだと、リリースまでにマイグレーションまで手が回らないなんてこともまあ考えられる。 今回使った環境は次の通り。 RDBMS には MySQL 5.7 を使った。
djangoでの集計は辛いという話 -- ORMは用法・用量を守って正しく使いましょう djangoのORMの機能の不足にぶち当たり辛いという話。別の言い方をすると、ORMは用法・容量守って正しく使いましょうという感じになるかもしれない。 はじめに 以下のような情報を年齢で丸めた値で集計してヒストグラムのようなものを作りたい。 名前 年齢 foo 10 bar 15 boo 20 結果 rank c 1 2 2 1 SQLでは頑張ればどうにかなる 集計をしたい時など何らかの演算の結果で GROUP BY したい時など結構ある。おそらくきっとある。 例えばヒストグラム的なものを作成したい時など。SQLであれば CASEとWHENを書き連ねることを気にしなければどうにかなる。 sqlite> create table person(name string primary key, age in
Basic Usage¶ You can get basic application template to use with SQLAlchemy by using alchemy scaffold. Check the narrative docs for more information. Alternatively, you can try to follow wiki tutorial or blogr tutorial. Using a Non-Global Session¶ It's sometimes advantageous to not use SQLAlchemy's thread-scoped sessions (such as when you need to use Pyramid in an asynchronous system). Thankfully,
DjangoでSQLAlchemyについては以前書きましたが、その時の内容から、今は、signals.request_finishedではなく、signals.request_startedをキャッチするようにした方がいいのではと思っています。 from django.core import signals from django.dispatch import dispatcher def start_request(signal, sender): # SQLAlchemyのContextual Sessionを初期化する Session.remove() dispatcher.connect(receiver=start_request, signal=signals.request_started) 理由は何らかの拍子にSession.remove()が呼ばれず、したがって接続プー
#!/usr/bin/env python # -*- coding: utf-8 -*- from sqlalchemy.engine import create_engine from sqlalchemy.orm.session import sessionmaker from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.schema import Column from sqlalchemy.types import Integer, String Base = declarative_base() class SessionFactory(object): def __init__(self, sql_connection, echo=False): self.engine = create
Python の有名な O/R マッパであるところの SQLAlchemy を MySQL と一緒に使っていたところ、ちょくちょく 'MySQL server has gone away' というエラーになることに気づいた。 今回はこの問題の原因と対策について調べたので書き残しておく。 結論から先に書いておくと上記のエラーは MySQL とのコネクションがタイムアウトを起こした状態で SQLAlchemy が SQL 文を発行したときに発生する。 対策については、MySQL とのコネクションがタイムアウトを起こさないように、一定時間毎にコネクションを張り直す設定を SQLAlchemy に行えば良い。 問題を再現させる環境を作る まずは問題を再現させるための環境作りから始める。 今回はプラットフォームに CentOS7 を使うことにする。 $ cat /etc/redhat-release
According to the Python documentation about __repr__, a call to repr() should give you a valid Python expression if possible. This is a very useful guideline. And it is also something I I like to implement in my Python projects as much as possible. Now, for mapped database entities, you might argue that it makes sense to have a default constructor as long as it accepts the primary key columns. By
Sep 15, 20136 likes13,634 viewsAI-enhanced description SQLAlchemy is an object-relational mapper (ORM) for Python. It provides patterns for mapping database tables to objects and vice versa. The document discusses several ORM patterns from the book Patterns of Enterprise Application Architecture including: - Unit of Work pattern which maintains a set of objects to save in a transaction. SQLAlchemy
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く