MySQL/Ruby

[English]


これは MySQL の Ruby API です。MySQL の C API とほぼ同等の機能があります。

必要なもの

これら以外でも make できるかもしれませんが、確認してません。

ライセンス

このプログラムは Ruby ライセンス に従います。

インストール

次を実行してください。

% ruby extconf.rb

または

% ruby extconf.rb --with-mysql-dir=/usr/local/mysql

または

% ruby extconf.rb --with-mysql-config

それから

% make

extconf.rb には次のオプションを指定できます。

--with-mysql-include=dir
MySQL のへッダファイルの場所として /usr/local/include の代わりのディレクトリを指定します。
--with-mysql-lib=dir
MySQL のライブラリの場所として /usr/local/lib の代わりのディレクトリを指定します。
--with-mysql-dir=dir
--with-mysql-include=dir/include, --with-mysql-lib=dir/lib と同じです。
--with-mysql-config[=/path/to/mysql_config]
mysql_config コマンドの結果からコンパイルパラメータを得ます。

次で簡単なテストができます。

% ruby -I. ./test.rb hostname user passwd

test.rb に与える hostname, user, passwd は MySQL サーバと、そのサーバ上でデータベースを作成することができるユーザ/パスワードを指定してください。

問題なければ、スーパーユーザでインストールしてください。

# make install

注意

テスト時にライブラリ libmysqlclient が見つからないというエラーが出る場合は、make 時にライブラリの場所を指定する必要があります。次のようにして make してみてください。

% env LD_RUN_PATH=libmysqlclient.soの場所 make

使い方

メソッド名は C API の関数から mysql_ 接頭辞を除いたものと同じです。メソッドの使用方法も基本的に対応する C API 関数と同様ですので、詳細は MySQL のマニュアルを見てください。

メソッド中でエラーが発生した場合は Mysql::Error 例外が発生します。

特に意味のある値を返さない関数は self を返します。

Mysql クラス

MySQL を操作するためのクラスです。

クラスメソッド

init()

Mysql クラスオブジェクトを返します。mysqld に接続はしません。 Mysql#options() が必要な場合は、これを呼んだ後に行ないます。

real_connect(host=nil, user=nil, passwd=nil, db=nil, port=nil, sock=nil, flag=nil)
connect(host=nil, user=nil, passwd=nil, db=nil, port=nil, sock=nil, flag=nil)
new(host=nil, user=nil, passwd=nil, db=nil, port=nil, sock=nil, flag=nil)

mysqld に接続し、Mysql クラスオブジェクトを返します。 flag の定数は C API のものと同じです。

例) Mysql::CLIENT_FOUND_ROWS

escape_string(str)
quote(str)

insert, update 用に文字列をクオートします。

get_client_info()
client_info()

クライアントバージョン情報の文字列を返します。

get_client_version()
client_version()

クライアントバージョン情報を数値で返します。

debug(str)

C API mysql_debug() と同じ。

オブジェクトメソッド

options(opt, val=nil)

C API の mysql_options() と同じです。 opt に指定する定数は C API から MYSQL_ 接頭辞を取り除いたものです。

例) Mysql::OPT_CONNECT_TIMEOUT

real_connect(host=nil, user=nil, passwd=nil, db=nil, port=nil, sock=nil, flag=nil)
connect(host=nil, user=nil, passwd=nil, db=nil, port=nil, sock=nil, flag=nil)

Mysql.real_connect() と同じです。Mysql.init() で生成したオブジェクトをサーバに接続するために使用します。

affected_rows()

影響された行数を返します。

autocommit(mode)

autocommit モードを mode に設定します。mode が nil, false, 0 の時はオフ、それ以外の場合はオンです。

change_user(user=nil, passwd=nil, db=nil)

接続ユーザを変更します。

character_set_name()

現在の文字セットを返します。

close()

接続を切断します。

commit()

トランザクションをコミットします。

create_db(db)

データベースを作成します。

drop_db(db)

データベースを破棄します。

dump_debug_info()

C API mysql_dump_debug_info() と同じ。

errno()

エラー番号を返します。

error()

エラーメッセージを返します。

escape_string(str)
quote(str)

insert, update 用に文字列をクオートします。 C API の mysql_real_escape_string() と同じ。

field_count()

最後に実行されたクエリの項目数を返します。

get_client_info()
client_info()

クライアントバージョン情報の文字列を返します。

get_client_version()
client_version()

クライアントバージョン情報を数値で返します。

get_host_info()
host_info()

接続情報を文字列で返します。

get_proto_info()
proto_info()

接続プロトコルバージョンを数値で返します。

get_server_info()
server_info()

サーバのバージョン情報を文字列で返します。

get_server_version()
server_version()

サーバのバージョン情報を数値で返します。

info()

直前のクエリの情報を文字列で返します。特に情報がなければ nil が返ります。

insert_id()

最後に生成された AUTO_INCREMENT 項目の値を返します。

kill(id)

id で指定したスレッドを殺します。

list_dbs(db=nil)

データベースの一覧を配列で返します。

list_fields(table, field=nil)

テーブル内の項目情報の一覧を示す Mysql::Result クラスオブジェクトを返します。

list_processes()

サーバ上の現在のスレッドの一覧を示す Mysql::Result クラスオブジェクトを返します。

list_tables(table=nil)

テーブルの一覧を配列で返します。

ping()

サーバが生きているかどうかをチェックします。

query(q)

クエリを実行します。Ruby では文字列の長さを判断できるので、real_query() はありません。 クエリが結果を返す場合、自動的に store_result() も実行して、Mysql::Result クラスオブジェクトを返します。 query_with_result に false が設定されていれば、store_result() は実行しません。

refresh(r)

サーバのログやキャッシュ等をフラッシュします。

reload()

アクセス権テーブルを再読み込みします。

rollback()

トランザクションをロールバックします。

select_db(db)

データベースを選択します。

shutdown()

サーバを停止します。

ssl_set(key=nil, cert=nil, ca=nil, capath=nil, cipher=nil)

SSL接続を使用します。Mysql.init() 後、Mysql#connect() 前に行なう必要があります。

stat()

サーバの状態を文字列で返します。

store_result()

クエリの結果の Mysql::Result クラスオブジェクトを返します。

thread_id()

現在の接続のスレッドIDを返します。

use_result()

クエリの結果の Mysql::Result クラスオブジェクトを返します。

warning_count()

直前のクエリの警告数を返します。

オブジェクト変数

query_with_result
true に設定すると query() 時に store_result() も実行して、Mysql::Result クラスオブジェクトを返します。 false に設定するとその動作は行われません。デフォルトは true です。

Mysql::Result クラス

クエリ結果のクラスです。

オブジェクトメソッド

free()

結果テーブル用メモリを解放します。

data_seek(offset)

現在の行の位置を offset 番目の行にします。

fetch_field()

現在の項目の Mysql::Field クラスオブジェクトを返します。 次に呼ばれた時は次の項目を返します。

fetch_fields()

項目全体を表す Mysql::Field クラスオブジェクトの配列を返します。

fetch_field_direct(fieldnr)

fieldnr 番目の項目の Mysql::Field クラスオブジェクトを返します。

fetch_lengths()

現在の行の各項目値の長さの配列を返します。

fetch_row()

検索結果の1行を返します。次に呼ばれた時は次の行を返します。 戻り値は項目値の配列です。

fetch_hash(with_table=false)

検索結果の1行を返します。次に呼ばれた時は次の行を返します。 戻り値は項目名をキーとした項目値のハッシュです。 with_table が true の場合はキーにテーブル名も付加され、"テーブル名.項目名" という形式のキーになります。

field_seek(offset)

現在の項目位置を offset 番目の項目にします。

field_tell()

現在の項目の位置を返します。

num_fields()

項目数を返します。

num_rows()

検索件数を返します。

row_seek(offset)

現在の行の位置を設定します。 offset は内部表現で row_tell() が返した値です。

row_tell()

現在の行の位置を内部表現で返します。

イテレータ

each() {|x| 〜}

検索結果の各行ごとに {〜} を繰り返します。x は項目値の配列です。

each_hash(with_table=false) {|x| 〜}

検索結果の各行ごとに {〜} を繰り返します。 x は項目名をキーとした項目値のハッシュです。 with_table が true の場合はキーにテーブル名も付加され、"テーブル名.項目名" という形式のキーになります。

Mysql::Field クラス

項目の詳細を表すクラスです。C API と異なり、オブジェクトは Mysql::Result とは独立して存在するので、Mysql::Result クラスオブジェクトが解放された後でも利用できます。が、そのため C API よりもメモリを使用します。

オブジェクト変数(読み出しのみ)

name
項目名
table
テーブル名
def
デフォルト値
type
項目の型
length
項目の長さ
max_length
検索結果中の項目値の最大長
flags
フラグ
decimals
小数部桁数

type に対応する定数は C API のものから FIELD_ 接頭辞を除いたものです。

例) Mysql::Field::TYPE_STRING

flag に対応する定数は C API のものと同じです。

例) Mysql::Field::BLOB_FLAG

オブジェクトメソッド

hash()

上記の変数名をキーとするハッシュを返します。

例) obj.name == obj.hash['name']

is_not_null?()

フィールドが "NOT NULL" と定義されていれば真を返します。

is_num?()

フィールドが数値の場合は真を返します。

is_pri_key?()

フィールドがプライマリキーの場合は真を返します。

inspect()

文字列 "#<Mysql::Field:項目名>" を返します。

Mysql::Error クラス

MySQL のエラーを表わすクラスです。 MySQL のエラーが発生した場合に例外として生成されます。

オブジェクト変数(読み出しのみ)

error
エラーメッセージ
errno
エラー番号

errno に対応する定数は C API のものと同じです。

例) Mysql::Error::CR_UNKNOWN_HOST

履歴

2005-02-12
version 2.5.2

作者

e-mail: とみたまさひろ tommy@tmtm.org http://tmtm.org


TOMITA Masahiro
Last modified: Sat Feb 12 20:42:22 JST 2005