libpqxxでpostgresqlへ接続
早速libpqxxでPostgreSQLに接続してみたいと思います。
libpqxx勉強開始です。
今日のお話
libpqxxライブラリでPostgresqlへ接続してみたという記録です。
開発言語
環境
- CentOS7.3
- vagrant
ソースコード
void Db::DbConnect() { try { conn = new pqxx::connection{"hostaddr=xxx.xxx.xxx.xxx port=xxxx dbname=xxxx user=xxxx password=xxxx"}; pqxx::work worker(*conn); pqxx::result result = worker.exec("Select * from xxxx"); for (pqxx::row row : result) { cout << row[1].c_str() << endl; } } catch (const exception &e) { cerr << e.what() << endl; } } }
※ xxxx
のところは接続環境情報となります。
気付き
- 意外と簡単にDb接続、データの取得まですることができた。
- connection関数の中は、半角スペースで区切るみたいです。
- libpqxxの型になるのでその辺りは確認しながら作成する感じですね。
戯言
- 接続できるようにはなったけど、まだまだ改善の余地がアリそう。
- 次はinsert, update, delete, selectの関数を作っていきたいかな。
Makefileを使ってみたい
Makefile
今日のお話
- Makefileの仕組みを知る
環境
- CentOS 7.3
注意事項
- 説明に重点を置いているので、順に説明していきます。急いでいる人は下から読んでいくことがオススメです!
- 間違っていることがあればコメントください!
フォルダ構成
- Project(ディレクトリ) |-main.cpp |-Hoge.hpp(インタフェースクラス) |-HogeSub.hpp |-HogeSub.cpp
Makefileの中身の名称
ターゲット:依存ファイル コマンド
Makefileを使わない場合
↓みたいな感じでコマンドを順次実行する必要がある
$ g++ -c HogeSub.cpp -o HogeSub.o $ g++ -c main.cpp -o main.o $ g++ main.o HogeSub.o
とりあえずMakefile作る
All: g++ -c HogeSub.cpp -o HogeSub.o g++ -c main.cpp -o main.o g++ main.o HogeSub.o
初期進化
変数、依存ファイルを知ると↓みたいになった。
CC = g++ CFLAGS = -g -Wall All: main.o HogeSub.o $(CC) $(CFLAGS) -o main main.o HogeSub.o mani.o: main.cpp $(CC) $(CFLAGS) -o mani.o -c main.cpp HogeSub.o: HogeSub.cpp $(CC) $(CFLAGS) -o HogeSub.o -c HogeSub.cpp clean: rm -f *.o main
All
ターゲットが呼び出されるAll
ターゲットに依存ファイルmain.o HogeSub.o
と書かれているため、main.o
ターゲットが呼び出され、コマンドが実行される(main.oファイルができる)HogeSub.o
ターゲットが呼び出される(HogeSub.oファイルができる)- 依存ファイルが解消されたので、
All
ターゲットが呼び出される
※ -g
はデバッグ情報、 -Wall
は警告オプションを全て有効にする
ちょっとカッコよくなってきたMakefile
コマンドが使えること、サフィックスルールを知ったら↓みたいになった。
CC = g++ CFLAGS = -g -Wall SRC = $(shell ls *.cpp) OBJS = $(SRC:%.cpp=%.o) All:$(OBJS) $(CC) $(CFLAGS) -o main $(OBJS) clean: rm -f *.o main
戯言
トリビアなmakefile入門
http://www.jsk.t.u-tokyo.ac.jp/~k-okada/makefile/
【CentOS7】libpqxxインストール
個人でプログラム書く時はpythonがメインですが、新しい言語にもチャレンジしていこうということで、C++を使ってみようと思います。
今日のお話
centos7にlibpqxxライブラリをインストール
※libpqxxはpostgresqlへ接続するためのクライアントライブラリ
開発言語
環境
- CentOS7.3
- vagrant
インストール手順
$ sudo su - $ yum -y install gcc-c++ # yum -y install postgresql-devel # yum install scl-utils centos-release-scl # yum install xmlto # yum install devtoolset-8 # source scl_source enable devtoolset-8 # echo "source scl_source enable devtoolset-8" >> ~/.bash_profile # yum -y install python3 # wget https://github.com/jtv/libpqxx/archive/6.4.7.tar.gz # tar zxvf 6.4.7.tar.gz # cd 6.4.7 # ./configure # make # make install
気付き
- yumコマンドで標準インストールできるgcc/g++のバージョンってOS全体で使われているもの。
- ライブラリのコンパイルの時に新しいバージョンのg++を使う必要がある時もある。
Software Collections
はOS標準モジュールでは使われていない、新しいバージョンのモジュールをインストールする仕組み(みたいな感じ)source scl_source enable devtoolset-8
を継続して使う場合は、.bash_profile
などに登録が必要。make clean
でmakeに失敗して出来上がったオブジェクトファイルを削除可能。(念のためのメモ)