CLSQLでMySQLを使う
1. MySQLのユーザとDBの作成
# mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO testuser@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> CREATE DATABASE testdb CHARACTER SET utf8;
# mysql -p -u testuser testdb
※接続が正常にできることを確認
2. 必要なパッケージをインストールする
CLSQLで実際にDBに接続するときにコンパイルがされますが、gcc等がインストールされていないとエラーになる。
# yum install gcc autoconf automake
# yum install mysql-devel
※環境はCentOS6.7です。
3. CLSQLをインストールする
(ql:quickload :clsql)
4. DBに接続
(require :clsql) (clsql:connect '("localhost" "testdb" "testuser" "password") :database-type :mysql)
5. DBの接続状態の確認
(clsql:connected-databases)
6. データモデルを定義
(clsql:def-view-class test_tbl () ((id :db-kind :key :db-constraints :not-null :type string :initarg :id) (data1 :type string :initarg :data1) (data2 :type string :initarg :data2) (data3 :type string :initarg :data3)) (:base-table test_tbl))
7. テーブルの作成と削除
テーブル作成
(clsql:create-view-from-class 'test_tbl)
テーブル削除
(clsql:drop-view-from-class 'test_tbl)
8. テーブルの参照
(clsql:query "select * from TEST_TBL" :field-names nil)
※テーブル名は大文字小文字が厳密に区別されるので注意が必要
9. レコードの登録
(clsql:insert-records :into 'test_tbl :attributes '(id data1 data2 data3) :values '("001" "データ1" "データ2" "データ3"))
10. レコードの更新
(clsql:update-records [test_tbl] :av-pairs'((data1 "更新データ1")) :where [:= [id] "001"])
11. レコードの削除
(clsql:delete-records :from [test_tbl] :where [= [id] "001"])
(clsql:start-transaction) (clsql:delete-records :from [test_tbl] :where [= [id] "001"]) (clsql:rollback)
コミット
(clsql:start-transaction) (clsql:delete-records :from [test_tbl] :where [= [id] "001"]) (clsql:commit)
13. DB切断
(clsql:disconnect)