2018年6月30日土曜日

Python PostgreSQLをUbuntuで使う インストール〜psycopg接続

WindowsではPostgreSQLが使えるようになったので、Ubuntuでもやってみることにしました。

インストール

公式ページにはデフォルトで入っていると書かれているのですが、16.04LTSで入っていませんでした。version10は見つからず、9.5を下記コマンド
sudo apt-get install postgresql
でインストールします。1分くらいで完了。
 $ cd /usr/lib
を見ると、postgresqlというディレクトリができていて、インストールが確認できます。


データベースを作る

 $ sudo su postgres
とやってユーザをpostgresに切り替えます。

データベース(ここではmydatabaseという名前)を作って、消すには 
$ createdb mydatabase
$ dropdb mydatabase 
 とします。

postgresql起動

その後は、su (元のユーザ) として戻って
$ sudo -u postgres psql
で起動できます(postgresのままならpsqlだけで起動)。
(※終了は \q )
$ sudo -u postgres psql
psql (9.5.13)
Type "help" for help.

postgres=# 

ここで\list または \l と打つと、データベースのリストが見れます。

postgres=# \l

                                   List of databases
    Name     |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges  
-------------+----------+----------+-------------+-------------+-----------------------
 my_database | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 


postgresを使うときはサーバが動いている必要があります

$ sudo systemctl status postgresql 
とやって確認できます。動いていればこんな感じに出ます。
 ● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled
   Active: active (exited) since
statusのところをstopにすると停止。startで起動できます。参考。


パスワード設定

Windowsのときはインストール時にパスワードの設定がありましたが、ubuntuではありませんでした。
$ sudo -u postgres psql
 \password postgres
(enter password)
\q
とやってパスワードを設定します。


ここからPythonです。


psycopg2をインストール

$ conda install psycopg2

psycopg2接続

wikiのこのページを参考にして接続します。

#!/usr/bin/python
import psycopg2
import sys


def main():
    #Define our connection string
    conn_string = "host='localhost' dbname='my_database' user='postgres' password='secret'"

    # print the connection string we will use to connect
    print ("Connecting to database\n ->%s" % (conn_string))

    # get a connection, if a connect cannot be made an exception will be raised here
    conn = psycopg2.connect(conn_string)

    # conn.cursor will return a cursor object, you can use this cursor to perform queries
    cursor = conn.cursor()
    print ("Connected!\n")

if __name__ == "__main__":
    main()
出力が
Connected!

となればOK。

続きPythonでPostgreSQL(テーブル作成〜)


参考:

リスト
https://chartio.com/resources/tutorials/how-to-list-databases-and-tables-in-postgresql-using-psql/
パスワード
http://suite.opengeo.org/docs/latest/dataadmin/pgGettingStarted/firstconnect.html

0 件のコメント:

コメントを投稿