本次系统使用kylin-server-10,python使用3.7.9,odbc使用2.3.0,数据库使用达梦数据库DM Database Server 64 V8。
1、准备ODBC安装包
解压安装包:
[root@localhost app]# tar -xzvf unixODBC-2.3.0.tar.gz
2、解压后进入unixODBC-2.3.0目录执行如下操作,本次安装位置采用默认位置/usr/local/etc:
[root@localhost unixODBC-2.3.0]# ./configure --enable-gui=no
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gawk... (cached) gawk
......
可以通过prefix参数指定安装位置。如果不使用prefix参数,默认安装在/usr/local/etc。
[root@localhost unixODBC-2.3.0]# ./configure --prefix=/usr/local/etc --enable-gui=no
执行./configure 命令提示gcc缺少或者版本低,错误提示如下:
[root@localhost unixODBC-2.3.0]# ./configure --enable-gui=no
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gawk... (cached) gawk
checking for bison... no
checking for byacc... no
checking for style of include used by make... GNU
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/app/unixODBC-2.3.0':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.
此种错误主要由于gcc引起,执行yum -y install gcc 安装gcc即可。
3、执行编译安装:
[root@localhost unixODBC-2.3.0]# make && make install
make all-recursive
make[1]: Entering directory `/app/unixODBC-2.3.0'
Making all in extras
make[2]: Entering directory `/app/unixODBC-2.3.0/extras'
/bin/sh ../libtool --tag=CC --mode=compile gcc -
make[2]: Entering directory `/app/unixODBC-2.3.0'
make[2]: Nothing to be done for `install-exec-am'.
touch /usr/local/etc/odbcinst.ini
touch /usr/local/etc/odbc.ini
mkdir -p /usr/local/etc/ODBCDataSources
/usr/local/bin/odbc_config --header > /usr/local/include/unixodbc_conf.h
make[2]: Leaving directory `/app/unixODBC-2.3.0'
make[1]: Leaving directory `/app/unixODBC-2.3.0'
......
4、查看 odbc 版本:odbc_config --version
[root@localhost unixODBC-2.3.0]# odbc_config --version
2.3.0
5、查看 odbc 配置文件路径:
[root@localhost unixODBC-2.3.0]# odbcinst -j
unixODBC 2.3.0
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
6、进入odbc配置文件所在目录配置odbc.ini和odbcinst.ini:
进入odbc安装目录/usr/local/etc:
[root@localhost ~]# cd /usr/local/etc
[root@localhost etc]# pwd
/usr/local/etc
查看配置文件:
[root@localhost etc]# ll
total 4
drwxr-xr-x 2 root root 4096 Nov 16 23:28 ODBCDataSources
-rw-r--r-- 1 root root 0 Nov 16 23:28 odbc.ini
-rw-r--r-- 1 root root 0 Nov 16 23:28 odbcinst.ini
本次odbcinst.ini与odbcinst.ini文件主要针对达梦数据库,其它数据库请参照对应数据库模板进行配置。
odbc.ini
[dm]
Description=DMODBC #此处填写没有特殊要求。
Driver=DMDRIVER #此处与odbcinst.ini 名称一致
SERVER=127.0.0.1
UID=SYSDBA
PWD=SYSDBA
TCP_PORT= 5236
odbcinst.ini
[DMDRIVER] #此处与odbc.ini文件Driver一致
Description= DMDRIVER #此处填写没有特殊要求。
DRIVER= /home/dmdba/dmdbms/bin/libdodbc.so
7、配置好以后可以通过isql -v dm 测试:
测试前需要确保达梦数据库已经安装好,并确认网络连通性。
[root@localhost ~]# isql -v dm
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
8、连接错误:
[root@localhost etc]# isql -v dm
[01000][unixODBC][Driver Manager]Can't open lib '/home/dmdba/dmdbms/bin/libdodbc.so' : file not found
[ISQL]ERROR: Could not SQLConnect
出现这种错误主要是由于odbcinst.ini文件无法识别libdodbc.so路径,需要进行环境变量配置:
[root@localhost etc]# echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dmdba/dmdbms/bin/" >> ~/.bash_profile
[root@localhost etc]# source ~/.bash_profile
再次连接即可。
9、pyodbc安装
pyodbc安装通过pip工具进行安装,pip工具在python3中无需自己安装。
[root@localhost ~]# pip3 install pyodbc
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Collecting pyodbc
Downloading pyodbc-4.0.35-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (324 kB)
|████████████████████████████████| 324 kB 5.0 kB/s
Installing collected packages: pyodbc
Successfully installed pyodbc-4.0.35
10、python连接示例
连接示例主要通过创建demo.py文件进行数据库连接脚本编写,进行数据库的连接操作,脚本如下:
[root@localhost /]# vim demo.py
import pyodbc
conn = pyodbc.connect('DRIVER={DMDB};SERVER=127.0.0.1;UID=SYSDBA;PWD=SYSDBA;TCP_PORT=5236') #不需要配置odbc.ini
#conn = pyodbc.connect(DSN='dm') #这种写法需要配置odbc.ini文件
cursor = conn.cursor()
cursor.execute("select * from dmhr.city")
row = cursor.fetchone()
while row:
print(row)
row = cursor.fetchone()
conn.close()
执行效果如下:
[root@localhost /]# python3 demo.py
('BJ ', '北京', 1)
('SJZ', '石家庄', 1)
('SH ', '上海', 2)
('NJ ', '南京', 2)
('GZ ', '广州', 3)
('HK ', '海口', 3)
('WH ', '武汉', 4)
('CS ', '长沙', 4)
('SY ', '沈阳', 5)
('XA ', '西安', 6)
('CD ', '成都', 7)
至此,就可以用python通过odbc对数据库进行操作了。相较于驱动方式连接,这种方式对于已经配置好odbc的程序,所做更改比较小,同时对于python版本依赖比较小,在一定程度上节省了配置时间。
文章
阅读量
获赞