Python3.3 + SQLAlchemy + PyMySQL で発生したエラー

/tmp/python/virtualenvs/py3kproject/lib/python3.3/site-packages/pymysql/converters.py line 116 in convert_datetime if ' ' in obj: TypeError: Type str doesn't support the buffer APIってエラーが出た。 原因は SQLALCHEMY_DATABASE_URI = 'mysql+…

Vagrant で Ansible を動かす

Packer を使って box ファイルの作成が完了したので、ローカルの Mac に Vagrant を使って CentOS6.5 を起動させた。 Ansible はローカルの Mac に 1.4.3 をインストール。 Vagrant のネットワークは NAT でホストの Mac からは IP アドレスを直接うっても s…

Flask-Injector を使ってモックに差し替える

Injector を使って DI してるんだから、テストコードからも置き換えたいよねーってお話。 # Mock を使って差し替える事も出来る app.py # -*- coding: utf-8 -*- from flask import Flask from flask.ext.injector import init_app, post_init_app from bind…

Packer ではまる

Ansible を試そうと思って、構成管理するサーバをとりあえず Vagrant を使って建てようとした。 box ファイルをどうしようと悩んだが Packer を使って自分で作ってみる事にした。 0.5.0 で後方互換を無くす仕様変更があり、ハマったのでメモ。 # 典型的な Ya…

Flask-Injector で試したあれこれ

Flask-Injector を試してる時に、これはどうしたら良いんだろうというのがあったので、色々試してみた。 コンストラクタに引数を渡したい 色々試していて以下のようにコンストラクタに引数を受け取りたい場合はどうしたら良いのか試行錯誤した所、binds でイ…

Flask-Injector を試してみた

Python というか Flask でも DI コンテナ欲しいなーと思う事がある。 去年書いていたコードでは最初アップロードしたファイルの保存を Flask が動いているサーバのファイルシステムに保存していたが、後から RiakCS に保存するという仕様変更を行った。 こん…

Flask の拡張の Python3 対応

今年は本格的に Python3 に移行しようと重い腰を上げた。 まずは自作の Flask のプロジェクトジェネレータを Python3 対応にした。 Application factory 内で itereitems() を使っている所があったので、_compat.py を作りその中で iteritem をラップするも…

2013 年振り返り

なんか小さい病気ばっかりしてた気がする…。 1 月 手に熱湯を誤って掛けてしまい火傷する。 たしか金曜の夜に熱湯をかぶり土曜日の夜くらいに痛みが出て来てヤバいと思い慌てて近くの病院を探すも夜だしやってないし、次の日は日曜だったから当然休診だった…

aws-sdk-ruby で keepalive でハマった

メモ。 ストレージサーバに RiakCS を使って、Python の boto から RiakCS にファイルを送信する。 Ruby で書かれたサーバー(MessagePack-RPC)があり、それが Python で突っ込んだファイルを取得し処理をする。 Python から Ruby のサーバーに対して Message…

Flask-Restless を試してみる

API サーバとして Flask を使う場合にコードが簡略できそうなので、Flask-Restless を試してみた。 同様なプロダクトとして、Flask-Restful があるけど、Flask-Restless を選んでみたのは view を書かなくてよさそうだったから。 # 逆に言えば「おまかせ」に…

Flask-WTF0.9 で仕様変更

Flask-WTF0.8 を使っていて、0.9 にアップデートしたら色々互換性が無くなっていてハマった。 Field モジュールの廃止 0.8.x で動いてたコード from datetime import timedelta from flask.ext.wtf import Form, TextField, validators from flask.ext.babel…

Flask-SQLALchemy で multi-database をつかったのが動かない

Flask-SQLAlchemy を試してみるかと思って以下のようなのを書いた。 #!/usr/bin/env python # -*- coding: utf-8 -*- "" from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'…

QuickRun.vim で Python のテストを実行した際にモジュールが読み込まれない現象

メモ。 環境: Python2.7.4, MacVim Kaoriya 7.4.22, QuickRun.vim QuickRun-Unittest, vim-virtualenv Flask を使ってこんなコードを書いてた。app.py # -*- coding: utf-8 -*- from flask import Flask from flaskext.kvsession import KVSessionExtension…

Supervisor で Celery を管理

メモ。 [program:celery] command=celery -A foo.tasks.task worker -l debug -E environment=PYTHONPATH=%(here)s/../../barproject directory=%(here)s/../barproject autostart=true autorestart=true redirect_stderr=true stdout_logfile=%(here)s/../l…

dataset でマルチバイトが正しく処理されてない

dataset っていう Python でデータベースを簡単に扱うライブラリがある。 雰囲気的には以前書いた MoSQL と似た感じ。 dataset: databases for lazy people — dataset 1.0.8 documentation こっちはバックエンドに SQLAlchemy を利用している。 ドキュメント…

svn で間違ってコミットしてしまったのを取り消す

メモ。前提家では Git を使っている。 職場は svn な環境で $ svn commitとか間違ってしてしまって全ての変更が問答無用でコミットされる悲劇が起きた。 直前のコミットを取り消したい。 svn update svn merge -r 1000:999 .リビジョン番号 1000 を 999 に戻…

pip インストール元を Github のリポジトリを指定する

メモ。 requirement.txt にどうやって書くのか分からなかった。 こう書く。 -e git://github.com/bycoffe/python-placemaker.git#egg=placemakerアンインストールの方法。 $ pip uninstall placemakerみたいな egg の名前を指定すれば行けるのかと思ったけど…

MoSQL を試してみた

MoSQL って DB みたいな感じがするが、Python のライブラリ。 MoSQL — More than SQL — MoSQL v0.12.3 documentation 要は ORM を使う規模ではない、でも生の SQL を書くには苦痛という人向けのよう。 SQLAlchemy の Query オブジェクトみたいなのや SQLSoup…

RSpec を実行した時にモジュールがロードされない問題

メモ。 環境が rvm を使っていて、とあるライブラリを gem を利用してインストールしてある環境で、RSpec を使ってテストを書いている時にブチ当たった現象。 # なお当方 Ruby | RSpec 初心者 作っているモジュールのテストコードを書いていて、とあるモジュ…

jedi.vim の popup_select_first が効かない

Vim

jedi.vim がバージョンアップして補完候補が常に選択されるという現象にあたった。 let g:jedi#popup_select_first = 0 という設定で解除できるとの事が正しく動作していない。 報告したけどあんまり良い感触じゃないっぽい。 g:jedi#popup_select_first = 0…

jedi.vim

jedi.vim に Pull Request した - Memo で Pull Request して dev ブランチに取り込んで貰った物が jedi が 0.7 になって他の変更と共に master にマージされた。 jedi.vim の設定値もいくつか変更があった模様。 変更前 変更後 g:jedi#get_definition_comma…

Riak についての疑問

OSC 京都に Riak のセッションを聞きに行った。 内容は Riak の基礎的な事で入門には最適なセッションだった。 仕事で Riak-CS を試験的に分散してないストレージとして試していて、Riak 自体を直接使ってる訳ではないのでとても良かった。 # ちょっと落ち着…

MacPorts で入れた MySQL5.6 に接続できなかった時の対応

仕事マシンを移行してローカル環境に MySQL5.6 を入れて、Python で書いたアプリケーション経由で ローカルの MySQL にアクセスしたら、以下のように出た。 OperationalError: (OperationalError) (2003, "Can't connect to MySQL server on 'localhost' (61…

Flask の Extension の Python3 対応状況

Flask がめでたく Python3.3 をサポートしたので、Flask に依存している Flask-Extension の Python3 対応状況が気になったので調べてみた。 #!/usr/bin/env python # -*- coding: utf-8 -*- import pprint import requests from bs4 import BeautifulSoup P…

Ruby から RiakCS にアクセスする

メモ。aws-sdk を使ったら行けた。 # -*- encoding: utf-8 -*- require 'logger' require 'aws-sdk' configs = { access_key_id: 'C_AHU4UXUQE9CBDSY8WX', secret_access_key: 'GR63vRcdenI1P99LPD8_ucE_RZhf9lpXwlyVxA==', s3_endpoin: 'localhost', proxy_…

jedi.vim に Pull Request した

jedi.vim をアップデートしたら以下の様な警告が表示された。 jedi-vim/jedi/jedi/api.py:209: DeprecationWarning: Use completions instead. warnings.warn("Use completions instead.", DeprecationWarning)補完自体は出来るが警告が気になったのでソース…

Riak CS を使ってみる

Riak が動いたので、Riak CS も試してみる。 Vagrant で作った CentOS 上に yum を使って Riak CS に必要なパッケージはインストール済み。 Riak CS は HTTP ポートに 8080 を使っているので、Virtual Box にポートフォワードさせる。 Vagrantfile に以下を…

Riak を使ってみる

ここ数日 Riak について調べていたのでメモ。 因にゴールが Riak CS を使って分散ストレージを使う事。 まずは Riak のセットアップ。 手元の Mac に入れてみる。 http://blog.basho.co.jp/post/50004340626/mac-riak-1-3-1 を参照。 #!/usr/bin/env python …

Celery を使ってみる

昔ちょっと Celery を試した事があったが、ジョブキューなのが必要になったので再入門してみた。 WAF には Flask を使っている。 Celery には Flask の Extension があるが、Celery3.0 になってから非推奨になっており、Celery 本体の API を使う事が推奨さ…

検索時のハイライト

Vim

/ とかで検索時にデフォルトじゃハイライトされていて、どの行にいまカーソルがあるのか分かりにくい。 / とか * とかの検索の場合は でビジュアルモードで現在行を視認するという方法もある。 これが、:%s/foo/bar/gc の様な場合で、foo が沢山ある場合、今…