ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

Python, MySQL / MariaDBに接続する。

python image
イラストダウンロードサイト【イラストAC】
の画像をもとに加工しています。

CentOSに標準インストールされているPython2.7にmysql-connector-pythonパッケージをインストールして、MySQL/MariaDBに接続します。

Python3系や自インストールしたものでも使えるし、CentOS以外でもやり方は同じです。

DBに接続を行うコネクターのインストール環境です。

OSCentOS 7.4.1708
pythonVer2.7。OS標準インストール。
DBMySQL, MariaDB

pipコマンドを使ってインストール

pythonのパッケージ管理であるpipコマンドを使用してインストールします。

pip install mysql-connector

失敗しました。こんなエラーです。

running install

Not Installing MySQL C Extension

running build

# Python architecture: 64-bit
# Python ARCH_64BIT: True
Unable to find Protobuf include directory.

' ----------------------------------------


Command "/usr/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-eUfgeL/mysql-connector/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-HBetzs-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-eUfgeL/mysql-connector/

pipコマンドのインストールでエラコード=1が返されています。

そこでMySQLのサイトを見たところ、手動インストールができるようなので、インストール方法を変えました。

手動インストール

yum install mysql-connector-python

インストール確認

pipコマンドで確認します。

pip list
backports.ssl-match-hostname (3.4.0.2)
certifi (2017.4.17)
chardet (3.0.4)
configobj (4.7.2)
decorator (3.4.0)
idna (2.5)
iniparse (0.4)
kitchen (1.1.1)
mysql-connector-python (1.1.6)

...

今度はうまくいきました。

ぼく
エンジニア
でも、なんでpipではダメだったんだろう?

原因を突き止めたいところですが、目的がちがうのでスルーします。

動作確認

python -c 'import mysql.connector'

このコマンドは、mysql-connector-pythonパッケージをインポートしています。ふだんはソースコードに書くものです。

インポートできれば(エラーが発生しなければ)、パッケージが正常にインストールされています。

正常なら標準出力に何も表示されません。

前の投稿
Python,「SyntaxError: Non-ASCII character」日本語対応の方法
Python pip, パッケージ管理の使い方。よく使うサブコマンド集。
次の投稿

最近ITカテゴリでよく読まれている記事です。

domain image

ドメイン取得の意味が分からない人へ。王道の方法を紹介します。

ドメインの登録業者を選ぶのに悩む必要はないです。サイトを簡単に早く公開するには全くいらないことで、むしろ邪魔です。『お名前.com』というサービスは必ず耳にします。そのお名前.comのメリットとデメリットと一緒に、ドメインの意味が分からない人が一番失敗しないドメインの取得方法を紹介します。

tadtadya.com
コメントを残す

*