尝试使用Ubuntu 18.04 + VsCode + Python3 + pyodbc(odbc-postgresql)来访问Postgres12

目的 – 原文中的”目的”在中文中可以被理解为”目标”、”意图”或”目的”。

・在Ubuntu 18.04上安装odbc-postgresql
・同样安装pyodbc
・尝试从Ubuntu 18.04 + VsCode + Python3 + 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

通过ODBC从Linux或Mac连接到PostgreSQL。


$ 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 Server 2019 Express
从Ubuntu 18.04 + VsCode + Python3 + psycopg2(libpq-dev)尝试访问Posgtgres12
apt-file是解决缺少必要库问题的救星
在安装了Posgtgres的Ubuntu 20.04上尝试使用C# + Npgsql访问
从Win10 + VsCode + Python3 + psycopg2访问Ubuntu 20.04 + Posgtgres12

广告
将在 10 秒后关闭
bannerAds