PEP 249対応進まず
PEP 249に対応しようとしてるんだけどなかな難しい。
description。今ぶつかってる問題がここ。
Field Packetでは
- lengthはバイト数で返ってくる
- fieldのcharsetは取れるが、何バイトの文字なのかは送られてこない
- display_sizeが謎
utf8のvar_charだと50ー>150で返ってくる。
50でセットしたいんだけどねえ。
descriptionで返す7項目のタプルは以下
(name,
type_code,
display_size,
internal_size,
precision,
scale,
null_ok)
必須なのは先頭の2つだけなので249的には満たすことはできるんだけど。。。。
実際に何バイトなのかはmysqlのstrig/ctype-xxx.c内のmbmaxlenの値を見ればわかるので
charsetのdictを定義(なんかごにょって作る)しておいてcharsetnrから引けるようにすべきかな。。。。
あと、display_sizeが謎っていうのはMySQLdbのdescriptionの値をみてそう思った。
なんか違うと思うんだけど。
あと、nullかどうかとかのfagsの値だけど先頭は無視していいっぽい。
flagsの値は
flags: The possible flag values at time of
writing (taken from include/mysql_com.h), in hexadecimal:
0001 NOT_NULL_FLAG
0002 PRI_KEY_FLAG
0004 UNIQUE_KEY_FLAG
0008 MULTIPLE_KEY_FLAG
0010 BLOB_FLAG
0020 UNSIGNED_FLAG
0040 ZEROFILL_FLAG
0080 BINARY_FLAG
0100 ENUM_FLAG
0200 AUTO_INCREMENT_FLAG
0400 TIMESTAMP_FLAG
0800 SET_FLAG
flags = struct.unpack('
で3桁(203とか)の値を取り出して見るっぽい。
(まちがってるかも)
とりあえずMySQLdbがcのラッパー使ってる理由がわかった。
(めんどいからだよ!)