###はじめに
タイトルの通りpythonでmariaDBを操作する方法についてまとめます。
###環境
CentOS7.4
python3.6.3
5.5.56-MariaDB(mysql)
※mariadbはmysqlの後継みたいなものと思ってください。基本的な使い方は変わりません。
###◆mariaDB(mysql)のインストール
以前にphpからDBを操作する方法についてまとめているのでDBサーバの構築については以下リンク先の"◆DBサーバの構築"参照してください。
また、この記事でもリンク先の記事で使うworldという名前のサンプルDBを使うので、併せてDBに取り込むようにしてください。
[https://qiita.com/johndoe1022/items/006ab3fc61b4e3d67f3d]
###◆pythonのインストール
pyenvをインストールするため、まずはgitからインストール。
yum install -y git
環境変数を設定
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
とりあえず必要そうなパッケージをインストール。
※ここはあんまり調べ切れていないので不要なものも混ざっているかもしれません。
yum install -y zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel gcc
インストールできるpythonのバージョンを確認。今回は3.6.3をインストール。
pyenv install -l
pyenv install 3.6.3
現在のpythoのバージョンを確認
python --version
インストールしたpythonのバージョンに切り替えた後、再度現在のバージョンを確認
pyenv global 3.6.3
python --version
mariaDB(mysql)に接続するためのドライバをインストール
pip install PyMySQL
もし以下のような文章が表示されたらpipコマンドをアップグレードしてください。
You are using pip version 9.0.1, however version 18.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
以下のコマンドでpipをアップグレードしたら、再度PyMySQKをpipでインストールしてください。
pip install --upgrade pip
/usr/local/に以下のpythonスクリプトを作成。
今回はvim /usr/local/sample01.pyで作成します。
※passwordとホスト名は環境に合わせて変更してください!
import pymysql.cursors
def main():
conn = pymysql.connect(
user='root',
passwd='password',#適宜自分で設定したパスワードに書き換えてください。
host='192.168.0.1',#接続先DBのホスト名或いはIPに書き換えてください。
db='world'
)
c = conn.cursor()
# テーブルの作成
sql = 'select * from city;'
c.execute(sql)
print('* cityテーブルの一覧を表示\n')
for row in c.fetchall():
print('No:', row[0], 'Content:', row[1])
main()
sample01.pyの権限を変更
chmod 644 /usr/local/sample01.py
作成したpythonスクリプトを実行
python /usr/local/sample01.py
以下のような感じでズラッと表示されたら成功です。
No: 1 Content: Kabul
No: 2 Content: Qandahar
No: 3 Content: Herat
No: 4 Content: Mazar-e-Sharif
No: 5 Content: Amsterdam
No: 6 Content: Rotterdam
No: 7 Content: Haag
No: 8 Content: Utrecht
No: 9 Content: Eindhoven
No: 10 Content: Tilburg
No: 11 Content: Groningen
No: 12 Content: Breda
No: 13 Content: Apeldoorn
No: 14 Content: Nijmegen
No: 15 Content: Enschede
No: 16 Content: Haarlem
No: 17 Content: Almere