2013年5月22日水曜日

ruby で mysql 接続

ruby では、java でうまく行かなかった time 型の最大値も問題なく表示されたが指数表記に差異が見られた。原因はここに記載されているデフォルトのフォーマットが異なるのだろう。また、bit 型の表記は、mysql コマンドで表示させた時と同じサイコロ状の表記となった。(サイコロ状表記についてはこちら

タイプ DB設定値 ruby取込値
BIT(8) 1 mysql の表記と同じ
TINYINT 127 127
BOOL 1 1
SMALLINT 32767 32767
MEDIUMINT 8388607 8388607
INT 2147483647 2147483647
BIGINT 9223372036854775807 9223372036854775807
FLOAT 3.402823466E+38 3.40282e38
DOUBLE 1.7976931348623157E+308 1.7976931348623157e308
DECIMAL 1 1
DATE '9999-12-31' 9999-12-31
DATETIME '9999-12-3123:59:59' 9999-12-31 23:59:59
TIMESTAMP '2037-12-3123:59:59' 2037-12-31 23:59:59
TIME '838:59:59' 23:59:59
YEAR 2155 2155
CHAR 'a' a
VARCHAR(255) 'ab1' ab1
BINARY(255),@ 'ab2' ab2
VARBINARY(255) 'ab3' ab3
TINYBLOB 'ab4' ab4
TINYTEXT 'ab5' ab5
BLOB(255) 'ab6' ab6
TEXT(255) 'ab7' ab7
MEDIUMBLOB 'ab8' ab8
MEDIUMTEXT 'ab9' ab9
LONGBLOB 'abA' abA
LONGTEXT 'abB' abB
ENUM('a','b','c'), 'c' c
SET('e','f','g') 'ef' e,f

#! /home/naoki/.rvm/rubies/ruby-1.8.7-p371/bin/ruby
# coding: utf-8
require 'rubygems'
require 'mysql'
con = Mysql::new("127.0.0.1","user","password","db")

begin
  res = con.query("select * from test01")
  res.each do |row|
    puts row[0]
    puts row[1]
    puts row[2]
    puts row[3]
    puts row[4]
    puts row[5]
    puts row[6]
    puts row[7]
    puts row[8]
    puts row[9]
    puts row[10]
    puts row[11]
    puts row[12]
    puts row[13]
    puts row[14]
    puts row[15]
    puts row[16]
    puts row[17]
    puts row[18]
    puts row[19]
    puts row[20]
    puts row[21]
    puts row[22]
    puts row[23]
    puts row[24]
    puts row[25]
    puts row[26]
    puts row[27]
    puts row[28]
  end
ensure
  con.close
end

0 件のコメント:

コメントを投稿