SQLAlchemy and You written on Tuesday, July 19, 2011 Without doubt are most new Python web programmers these days chosing the Django framework as their gateway drug to Python web development. As such many people's first experience with a Python ORM (or maybe an ORM altogether) is the Django one. When they are later switching to something else they often find SQLAlchemy unnecessarily complex and ha
It seems that one of the biggest questions around Flask-SQLAlchemy is how to use SQLAlchemy models outside of a Flask application. Several questions have been posted on sites like Stackoverflow and Reddit. There is an open issue on Github asking to document how to use your own declarative base class. As of this writing, there are even several pull requests to make Flask-SQLAlchemy easier to work w
Python3.4 && mysql-connector-python2.0.2で起きたこのエラー。 表題の通り、コネクションプールをしているオブジェクトが利用できないと申される。接続は死んでないっぽいのが謎。活きているのに死んでいるみたいな、そんな感じのエラー。MySQL Server has gone awayではないメッセージが返ってきているのが気になる。SQLAlchemyでは活きている(Valid)なコネクションを利用しようとしたら死んでいた可能性もあるから、mysqlのwait_timeout、interactive_timeout系の時間を長くして、flask-sqlalchemyのSQLALCHEMY_POOL_RECYCLEの時間をタイムアウトより小さくしたんだけど、1日おいてもまだこのエラーが消えなかった。 MySQLのコネクション自体は活きているのにSQLAlchem
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,
ここ数ヶ月 SQLAlchemy を使って開発をしている。 開発当初は特に問題もなく調子よく行っていたが、自分のローカル環境の MySQL の設定を本番に近づけたため、SQLAlchemy がエラーをはいた - Memo が出た。 pool_recycle の値を短くすれば解決と思ったが、解決しなかった。 前提として FW は Flask を利用。SQLAlchemy は素で scoped_session を使っている。 Flask-SQLAlchey や Flask-Alchemy-Session は使ってない。 autocommit, autoflush は False の設定。 でたエラーが sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2013, 'Lost connection to MySQL
with_lockmodeをつけてクエリを発行する。 Session.query(Model).with_lockmode('update').filter(criteria) MySQLのLOCK IN SHARE MODEでクエリを発行するならば、 Session.query(Model).with_lockmode('read').filter(criteria) OracleのFOR UPDATE NOWAITでクエリを発行するならば、 Session.query(Model).with_lockmode('update_nowait').filter(criteria) read update update_nowait以外のロックモードを指定した場合には例外が排出される。select関数のfor_updateオプションに指定できるロックモードと微妙に違うので注意が必要。 >>>
Python で Web アプリケーションを作っていて、ログイン後しばらく放っておいて、他の画面に遷移すると以下のようなエラーが出た。 sqlalchemy.exc.StatementError: (sqlalchemy.exc.InvalidRequestError) Can't reconn ect until invalid transaction is rolled back 今まで SQLAlchemy を使ってたけど、初めて遭遇した。 なんだろうこれと思って調べたら、SQLAlchemy の pool_recycle の秒数が MySQL の wait_timeout の秒数より長く設定していためだった。 とりあず pool_recycle の値を wait_timeout と同等にする事で解決。 ちゃんと MySQL のチューニングをする際に気をつけないと。
DBスキーマのバージョン管理したい ちゃんとしよう、と思ったのでAlembicを入れた。 DBスキーマのバージョン管理ィ~? http://www.slideshare.net/kwatch/db-28097225 インストールや基本的な使い方はここが最高に参考になりましたのでもうこれでいいと思う http://momijiame.tumblr.com/post/45191790683/python-alembic-rdb 開発途中でも簡単に導入できる ところで、今回のぼくのケースは、もうアプリ作り始めちゃってるから、既にSQLAlchemyのモデル定義がいくつかあって、もちろんDBにもテーブルが既にあって、何、これAlembicのマイグレーションスクリプトにもう一回テーブルの定義を全部書いてop.create_table しないといけないの? マジで? つらい…… 戦争くらいつらい……
前回は sqlalchemy-migrate を使ってみたから、今回は同様に Python のマイグレーションツールの Alembic を使ってみる。 Alembic もバックエンドに SQLAlchemy を使っているらしい。 Alembic を pip (PyPI) からインストールする。 インストールすると “alembic” コマンドが使えるようになる。 # pip install alembic $ pip freeze Mako==0.7.3 MarkupSafe==0.15 SQLAlchemy==0.8.0 alembic==0.4.2 wsgiref==0.1.2 $ alembic --help usage: alembic [-h] [-c CONFIG] [-n NAME] …(snip)… MySQL を使うので MySQLdb (MySQL-python) もイ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く