Ubuntu 18.04 + VsCode + Python3 + pyodbc(odbc-postgresql) から Posgtgres12 にアクセスしてみる
目的
・Ubuntu 18.04 に odbc-postgresql をインストールする
・同じく pyodbc をインストールする
・Ubuntu 18.04 + VsCode + Pytho3 + psycopg2(libpq-dev) から Posgtgres12 にアクセスしてみる
で作成した環境にアクセスしてみる
※Ubuntu はファイルが分割の粒度が小さいから、ファイル探すのにコツがいる感じ
pyodbcをインストールする
$ sudo pip3 install pyodbc
~
Installing collected packages: pyodbc
Successfully installed pyodbc-4.0.30
odbc-postgresqlをインストールする
対象パッケージを検索してみる
$ sudo apt search post | grep odbc
~
golang-github-lpabon-godbc-dev/bionic,bionic 1.0+git20140613.1.9577782-1 all
libcppdb-odbc0/bionic 0.3.1+dfsg-6 amd64
SQL Connectivity Library (odbc backend)
libghc-hdbc-odbc-dev/bionic 2.3.1.1-8build3 amd64
libghc-hdbc-odbc-doc/bionic,bionic 2.3.1.1-8build3 all
libghc-hdbc-odbc-prof/bionic 2.3.1.1-8build3 amd64
odbc-postgresql/bionic-pgdg 1:12.02.0000-1.pgdg18.04+1 amd64
odbc-postgresql-dbgsym/bionic-pgdg 1:12.02.0000-1.pgdg18.04+1 amd64
debug symbols for odbc-postgresql
r-cran-rodbc/bionic 1.3-15-1build1 amd64
Connect to PostgreSQL from Linux or Mac with ODBCより
$ sudo apt install odbc-postgresql
~
以下のパッケージが新たにインストールされます:
odbc-postgresql
~
odbc-postgresql:amd64 (1:12.02.0000-1.pgdg18.04+1) を展開しています...
odbc-postgresql:amd64 (1:12.02.0000-1.pgdg18.04+1) を設定しています ...
odbcinst: Driver installed. Usage count increased to 1.
Target directory is /etc
odbcinst: Driver installed. Usage count increased to 1.
Target directory is /etc
$ sudo ls /etc/*odbc*
/etc/odbc.ini /etc/odbcinst.ini
$ sudo odbcinst -i -d -f /etc/odbc.ini
実行後 /etc/odbc.ini の内容 -> /etc/odbcinst.ini (?仕様をチェックしないと・・)
$ sudo odbcinst -i -d -f /etc/odbcinst.ini
を実行すると /etc/odbcinst.ini の内容がクリアされる(仕様なのか??)
$ sudo cat /etc/odbcinst.ini
~
[PostgreSQL ANSI]
Description=PostgreSQL ODBC driver (ANSI version)
Driver=psqlodbca.so
Setup=libodbcpsqlS.so
Debug=0
CommLog=1
UsageCount=1
[PostgreSQL Unicode]
Description=PostgreSQL ODBC driver (Unicode version)
Driver=psqlodbcw.so
Setup=libodbcpsqlS.so
Debug=0
CommLog=1
UsageCount=1
/etc/odbc.ini の編集
ODBCドライバのインストール先は
$ sudo find /usr/lib -name psqlodbcw.so
/usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so
$ sudo find /usr/lib -name libodbcpsqlS.so
現在は見えない・・
※/usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so
※odbcinst1debian2_2.3.4-1.1ubuntu3_amd64.deb
には /usr/lib/x86_64-linux-gnu/odbc/libodbcpsqlS.so が記載されているのだが、インストールされていないのは謎??
※20.04 ではインストールされているので 様子見・・
/etc/odbc.ini に上記を追加後修正する
$ sudo cat /etc/odbc.ini
~
[PostgreSQL ANSI]
Description=PostgreSQL ODBC driver (ANSI version)
Driver=/usr/lib/x86_64-linux-gnu/odbc/psqlodbca.so
Setup=libodbcpsqlS.so
Debug=0
CommLog=1
UsageCount=1
[PostgreSQL Unicode]
Description=PostgreSQL ODBC driver (Unicode version)
Driver=/usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so
Setup=libodbcpsqlS.so
Debug=0
CommLog=1
UsageCount=1
odbc ドライバの有効化
$ sudo odbcinst -i -d -f /etc/odbc.ini
odbcinst: Driver installed. Usage count increased to 1.
Target directory is /etc
odbcinst: Driver installed. Usage count increased to 1.
Target directory is /etc
odbcinst: Driver installed. Usage count increased to 1.
Target directory is /etc
###odbc ドライバのリストの表示
$ sudo odbcinst -q -d
[MSSQLDEMO]
[PostgreSQL ANSI]
[PostgreSQL Unicode]
###odbc ドライバのリストの無効化
$ sudo odbcinst -u -d -n MSSQLDEMO
$ sudo odbcinst -u -d -n 'PostgreSQL ANSI'
$ sudo odbcinst -u -d -n 'PostgreSQL Unicode'
Code RunnerでPython3をキックする場合の修正点
修正になったバージョンが不明なのだけど 1.46.1 の時点では以下の手順で修正する
・ファイル -> 基本設定 -> 設定
・検索ボックスに Code-runner:Executor Map を入力する
・setting.json で編集をクリックする
・修正前
"code-runner.executorMap": {
}
・修正後
"code-runner.executorMap": {
"python": "python3 -u"
}
サンプルコード
# Windows Add env PYTHONIOENCODING = UTF-8 & restart vscode
# coding:utf-8
import pyodbc
server = '192.168.5.49'
port = '5432'
database = 'demo'
username = 'demo'
password = 'passwd'
constr = 'DRIVER={PostgreSQL Unicode};SERVER=' + server + ';PORT=' + port + ';DATABASE=' + database + ';UID=' + username + ';PWD=' + password
conn = pyodbc.connect(constr)
# Create a cursor from the connection
cur = conn.cursor()
cur.execute("select count(*) from zipcode")
row = cur.fetchone()
if row:
print(row)
cur.close()
conn.close()
参考にしたサイトはこちら
PostgreSQL データ ソースに接続する (SQL Server インポートおよびエクスポート ウィザード)
Ubuntu 18.04 で SQL Server2019 Express を試してみる
Ubuntu 18.04 + VsCode + Pytho3 + psycopg2(libpq-dev) から Posgtgres12 にアクセスしてみる
必要ライブラリがありません事案の救世主apt-file
Ubuntu 20.04 に Posgtgres をインストール後 C# + Npgsql でアクセスしてみる
Win10 + VsCode + Python3 + psycopg2 から Ubuntu 20.04 + Posgtgres12 にアクセスしてみる
Author And Source
この問題について(Ubuntu 18.04 + VsCode + Python3 + pyodbc(odbc-postgresql) から Posgtgres12 にアクセスしてみる), 我々は、より多くの情報をここで見つけました https://qiita.com/tabizou/items/9cd7ee28cd37c0ecefe1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .