iakioの日記 RSSフィード

2008-07-05

psycopg2とバージョン

| 17:59 | psycopg2とバージョン - iakioの日記 を含むブックマーク はてなブックマーク - psycopg2とバージョン - iakioの日記

何となくDjangoでもやってみようかと思ったらいきなりハマりました。

  File "C:\Python25\Lib\site-packages\django\db\backends\postgresql_psycopg2\base.py", line 57, in cursor
    postgres_version = [int(val) for val in cursor.fetchone()[0].split()[1].split('.')]
ValueError: invalid literal for int() with base 10: '3,'

ん?'3,'??

testdb=# select version();
                       version
-----------------------------------------------------
 PostgreSQL 8.3.3, compiled by Visual C++ build 1400
(1 row)

何でしょうかそのコンマは。

何やらWindowsの8.3以降ではversion()の最後にコンマが付くらしいです。若干腹も立ちますが本来バージョン番号が欲しければPQserverVersionかPQparameterStatusを使うべきで、psycopg2にはそれが実装されていない。ruby-pgだとこんな感じ。

irb(main):005:0> c = PGconn.open("dbname=db1")
=> #<PGconn:0x805f5e8>
irb(main):008:0> c.parameter_status("server_version")
=> "8.3.3"
irb(main):009:0> c.server_version
=> 80303

惜しいなぁ。psycopg2はわりと良くできてると思ってたのに。

トラックバック - http://postgresql.g.hatena.ne.jp/iakio/20080705