--- title: DBIでPerlからDBに接続 author: kazu634 date: 2009-07-13 wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4707;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - mysql - Perl ---
DBIというモジュールを用いてPerlからDBに接続するサンプルを作成しました。結構簡単だ。DBIについてこれから使い方を調べていこう!
sampleというデータベースの中に、Shopというテーブルがあります。その中にはaddressというフィールドがあります。
kazu634@kazu634-desktop% mysql -u root -p ~/work/googlemaps [3082] Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 72 Server version: 5.0.75-0ubuntu10.2 (Ubuntu) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | sample | +--------------------+ 3 rows in set (.00 sec) mysql> USE sample; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> SHOW TABLES; +------------------+ | Tables_in_sample | +------------------+ | Shop | +------------------+ 1 row in set (.00 sec) mysql> DESC Shop; +--------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+---------+-------+ | shopname | varchar(80) | YES | | NULL | | | address | varchar(90) | YES | | NULL | | | tel | varchar(15) | YES | | NULL | | | shophour | varchar(50) | YES | | NULL | | | accomodation | varchar(60) | YES | | NULL | | | access | varchar(100) | YES | | NULL | | | memo | varchar(100) | YES | | NULL | | +--------------+--------------+------+-----+---------+-------+ 7 rows in set (.00 sec) mysql> exit Bye
詳しくは参考リンクを見てください。
# === Libraries === use strict; use warnings; use Data::Dumper; use DBI; # === Main part === # データベースへの接続 my $dbh = DBI->connect( 'dbi:mysql:dbname=sample', 'root', 'xxxxx' ); # ステートメントハンドラの作成(=SQLをここで指定する) my $sth = $dbh->prepare("select address from Shop"); # ステートメントハンドラの実行(=SQLの実行) $sth->execute(); # ここでデータを取り出し、表示させる while (my @row = $sth->fetchrow_array ) { print "@row\n"; } # ステートメントハンドラの解放 $sth->finish; # データベースハンドラの解放 $dbh->disconnect;
kazu634@kazu634-desktop% perl mysql.pl ~/work/googlemaps [3081] 東京都豊島区東池袋1-40-2 東京都豊島区東池袋1-42-8 東京都豊島区巣鴨1-15-1 東京都文京区本郷4-37-13 東京都品川区大崎1-6-4 東京都中野区中野5-61-2 東京都中野区中野5-67-5 東京都中央区銀座2-7-18 東京都中央区銀座2-5-5 東京都中央区銀座2-8-15 東京都中央区銀座2-11-6 東京都中央区銀座3-3-11 東京都中央区銀座6-12-10 東京都中央区銀座5-15-1 東京都中央区日本橋2-3-6 東京都中央区日本橋本町1-1 東京都中央区八重洲1-6-17 東京都中央区八重洲1-7-4 東京都大田区大森北1-1-10 東京都大田区西蒲田8-1-7 東京都台東区上野6-1-1 東京都台東区上野4-10-7 東京都台東区上野2-13-13 東京都台東区谷中7-20-6 東京都千代田区五番町 東京都千代田区富士見2-2-6 東京都千代田区三崎町3-6-13 東京都千代田区内神田2-9-9 東京都千代田区内神田3-21-8 東京都千代田区鍛冶町2-1-4 東京都千代田区有楽町1-6-1 東京都千代田区外神田1-16-10 東京都千代田区外神田1-11-6 東京都千代田区神田佐久間町1-18 東京都杉並区阿佐ヶ谷南2-14-10 東京都杉並区高円寺北2-4-4 東京都新宿区西新宿1-24-1 東京都新宿区西新宿1-17-1 東京都新宿区西新宿1-5-11 東京都新宿区西新宿7-23-2 東京都新宿区新宿2-19-1 東京都新宿区新宿3-4-1 東京都新宿区市谷田町1-3 東京都新宿区四谷1-3-22 東京都新宿区歌舞伎町1-3-5 東京都新宿区歌舞伎町1-14-4 東京都新宿区歌舞伎町1-26-6 東京都新宿区西新宿7-1-1 東京都新宿区西新宿7-9-7 東京都新宿区百人町1-18-8 東京都新宿区百人町2-11-25 東京都新宿区高田馬場2-18-6 東京都新宿区高田馬場2-14-2 東京都新宿区高田馬場1-34-8 東京都新宿区高田馬場1-34-12 東京都渋谷区代々木1-30-6 東京都渋谷区千駄ヶ谷1-30-8 東京都渋谷区桜丘町15-15 東京都渋谷区渋谷2-17-5 東京都渋谷区宇田川町36-2 東京都渋谷区渋谷1-16-14 東京都荒川区西日暮里5-23-6 東京都荒川区東日暮里5-51-11 東京都港区赤坂3-10-2 東京都港区新橋4-10-2 東京都港区新橋1-17-2 東京都港区芝5-34-7 東京都港区芝大門2-3-1 東京都港区港南2-3-29 東京都港区高輪3-25-22 東京都江東区亀戸2-20-7 東京都葛飾区東金町1-42 東京都立川市柴崎町3-4-14 東京都立川市曙町2-13-10 東京都立川市曙町2-9-1 東京都武蔵野市中町1-6-7 神奈川県横浜市中区元町1-18 神奈川県横浜市中区港町2-6 神奈川県横浜市中区伊勢佐木町2-66 神奈川県横浜市鶴見区鶴見中央1-3-3 神奈川県鎌倉市小町1-6-19 神奈川県鎌倉市大船1-7-1 神奈川県川崎市川崎区駅前本町3-3 神奈川県川崎市川崎区砂子1-1-10 神奈川県足柄下郡箱根町湯本白石下706-35 埼玉県川越市脇田町103 千葉県市川市八幡2-6-15