PythonからPostgreSQLサーバをいじりたくて、調べたメモ。PythonからPostgreSQLを操作するにはpsycopg2
というのを使えばいいらしい。
ってことで早速実験。
環境
vagrant@vagrant:/vagrant$ cat /etc/os-release NAME="Ubuntu" VERSION="18.04.2 LTS (Bionic Beaver)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 18.04.2 LTS" VERSION_ID="18.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=bionic UBUNTU_CODENAME=bionic vagrant@vagrant:/vagrant$ vagrant@vagrant:/vagrant$ python3 --version Python 3.6.7 vagrant@vagrant:/vagrant$ pip3 --version pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6) vagrant@vagrant:/vagrant$
インストール
pip3でインストールすれば楽勝でしょっと思っていたら・・・・
vagrant@vagrant:/vagrant$ pip3 install psycopg2 Collecting psycopg2 Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/23/7e/93c325482c328619870b6cd09370f6dbe1148283daca65115cd63642e60f/psycopg2-2.8.2.tar.gz (368kB) 100% |????????????????????????????????| 368kB 3.4MB/s Complete output from command python setup.py egg_info: running egg_info creating pip-egg-info/psycopg2.egg-info writing pip-egg-info/psycopg2.egg-info/PKG-INFO writing dependency_links to pip-egg-info/psycopg2.egg-info/dependency_links.txt writing top-level names to pip-egg-info/psycopg2.egg-info/top_level.txt writing manifest file 'pip-egg-info/psycopg2.egg-info/SOURCES.txt' Error: b'You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.\n' ---------------------------------------- Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-ntb9gyi3/psycopg2/ vagrant@vagrant:/vagrant$
エラー発生。
エラー文に書いてある通り、ビルドができないようだったので、libpq-devをインストールする。
sudo apt-get install libpq-dev
そして再度実行。
vagrant@vagrant:/vagrant$ pip3 install psycopg2 Collecting psycopg2 Using cached https://files.pythonhosted.org/packages/23/7e/93c325482c328619870b6cd09370f6dbe1148283daca65115cd63642e60f/psycopg2-2.8.2.tar.gz Building wheels for collected packages: psycopg2 Running setup.py bdist_wheel for psycopg2 ... done Stored in directory: /home/vagrant/.cache/pip/wheels/3b/d0/9c/fbbaca1e768e108fdcb88a9a50ea43de141adf842741f8623f Successfully built psycopg2 Installing collected packages: psycopg2 Successfully installed psycopg2-2.8.2 vagrant@vagrant:/vagrant$
成功した。
今日の教訓
エラー文、そして公式ドキュメントをちゃんと読みましょう。
参考サイト
Installation — Psycopg 2.9.3 documentation
クイック スタート:Python を使用して接続する - Azure Database for PostgreSQL - Single Server | Microsoft Docs