使用ODBC连接Sybase ASE数据库
使用ODBC连接Sybase ASE数据库1. 本地连接
1.1 下载驱动管理器
1.1.1 下载驱动管理器
yum install unixODBC.x86_64 -y
下载相干的包,解决pyodbc无法使用的问题:
https://github.com/mkleehammer/pyodbc/wiki/Install#installing-on-linux
sudo yum install epel-release -y
sudo yum install python3-pip gcc-c++ python3-devel unixODBC-devel -y
pip3 install --user pyodbc
# 如果如要需要信任证书问题直接禁用即可
pip3 install --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org pyodbc
1.1.2 查看安装结果
安装好unixODBC驱动管理器后在控制台实行:
(venv) # odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
查看相干目录的位置
1.2 设置ASE驱动
查看DataAccess/ODBC/samples/readme.txt文件,里面纪录了怎样设置odbc驱动的步骤。
这里主要纪录几个关键点:
64位机ASE驱动位于DataAccess64/ODBC/lib/libsybdrvodb.so处,在修改driver路径时填这个文件的位置。
cd /opt/sybase/DataAccess/ODBC/samples
cat drivertemplate.txt
Description = Sybase ODBC Driver
Driver = /opt/sybase/DataAccess64/ODBC/lib/libsybdrvodb.so
FileUsage = -1
修改完设置文件后实行以下命令
odbcinst -i -d -f drivertemplate.txt
如许ASE驱动就会乐成启动,可以在**/etc/odbcinst.ini**文件里查看
1.3 设置ASE数据源
cd /opt/sybase/DataAccess/ODBC/samples
cat sampletemplate.txt
Description = SAP ODBC Data Source
UserID = sa
Password = 123456
Driver = Adaptive Server Enterprise
Server = sybase
Port = 5000
Database = master
UseCursor = 1
修改完设置文件后实行以下命令
odbcinst -i -s -f sampletemplate.txt
数据源会加载到**/root/.odbc.ini**文件处
1.4 实行连接脚本
$ cat test.py
import pyodbc
conn = pyodbc.connect(
'DRIVER={Adaptive Server Enterprise};SERVER=sybase;PORT=5000;DATABASE=master;UID=sa;PWD=123456')
print("suceessful")
cursor = conn.cursor()
cursor.execute()
cursor.close()
conn.close()
https://img-blog.csdnimg.cn/img_convert/edf65982c23e9e77630963c6ea2fb4d1.png 注意这里的设置:
/etc/host文件中:
$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.198.162 pg
192.168.198.163 oracle
192.168.198.170 sybase
interfaces文件中:
cd /opt/sybase
$ cat interfaces
sybase
master tcp ether 192.168.198.170 5000
query tcp ether 192.168.198.170 5000
sybase_BS
master tcp ether localhost 5001
query tcp ether localhost 5001
SYBASE_XP
master tcp ether localhost 5002
query tcp ether localhost 5002
sybase_JSAGENT
master tcp ether localhost 4900
query tcp ether localhost 4900
2. 长途连接
这里提供两种思绪:
[*]下载unixODBC只有再下载ASE的Driver,在根据本地连接一样,设置/etc/odbcinst.ini文件即可。
[*]直接下载带有ASE的Driver的ODBC的rpm包,安装之后再设置/etc/odbcinst.ini文件即可。
两种方式大差不差,如果不知道怎样下载ASE的drive的可以接纳第二种,比较方便快捷。
ODBC下载地址
ODBC Driver for ASE
https://img-blog.csdnimg.cn/img_convert/7ad87ada5104fb2b9c71ea48bf680eef.png https://img-blog.csdnimg.cn/img_convert/91e0d6920af2eb2bcc2163f0c8737e6a.png 2.1 下载rpm包
上面已经给出地址,下载后上传到服务器。
(venv-datacheck-2.5.0) # ll
-rw-r--r--. 1 root root 2893948 8月20 04:59 devart-odbc-ase.x86_64.rpm
2.2 安装rpm包
yum install devart-odbc-ase.x86_64.rpm -y
2.3 查看安装结果
安装好unixODBC驱动管理器后在控制台实行:
(venv-datacheck-2.5.0) # odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
查看相干目录的位置
2.4 编辑设置文件
查看/etc/odbcinst.ini和/etc/odbc.ini文件,里面都已经有了模版。按照之前Sbase ASE提供的模版设置即可。
odbc.ini文件:
Description=Sybase ASE Data Source
Driver=Adaptive Server Enterprise
Server=192.168.198.170
Port=5000
UserID=sa
Password=123456
Database=master
UseCursor=1
DEVART_ASE=Devart ODBC Driver for ASE
Driver=Devart ODBC Driver for ASE
Data Source=
Port=5000
Database=
User ID=
Password=
odbcinst.ini文件:
Description=ODBC for PostgreSQL
Driver=/usr/lib/psqlodbcw.so
Setup=/usr/lib/libodbcpsqlS.so
Driver64=/usr/lib64/psqlodbcw.so
Setup64=/usr/lib64/libodbcpsqlS.so
FileUsage=1
=# Driver from the mysql-connector-odbc package
=# Setup from the unixODBC package
Description=ODBC for MySQL
Driver=/usr/lib/libmyodbc5.so
Setup=/usr/lib/libodbcmyS.so
Driver64=/usr/lib64/libmyodbc5.so
Setup64=/usr/lib64/libodbcmyS.so
FileUsage=1
Description=Sybase ODBC Driver
Driver=/usr/local/devart/odbcase/libdevartodbcase.3.4.1.so
FileUsage=-1
UsageCount=1
Devart ODBC Driver for ASE=installed
Driver=/usr/local/devart/odbcase/libdevartodbcase.3.4.1.so
这里的/usr/local/devart/odbcase/libdevartodbcase.3.4.1.so即为ASE的driver位置。
2.5 实行测试脚本
(venv-datacheck-2.5.0) # cat test.py
import pyodbc
#参考http://bbs.csdn.net/topics/380063945。
conn = pyodbc.connect(
'DRIVER={Adaptive Server Enterprise};SERVER=192.168.198.170;PORT=5000;DATABASE=master;UID=sa;PWD=123456')
print("连接成功")
cursor = conn.cursor()
cursor.execute()
cursor.close()
https://img-blog.csdnimg.cn/img_convert/16f651125d161fa62c77429e24a6ea8c.png 3. 问题解答
3.1 将Sybase的driver拷贝
尝试将sybase本地连接上的driver拷贝过来,但是会一直报一个依赖找不到的错误,发起自行下载一下Driver而不是拷贝过来。
3.2 长途连接一直被拒绝
发起将主机地址和名称到场到/etc/hosts文件中,而且请注意interfaces文件中的数据库实例,在这个实例中大概使用localhost,发起改成主机地址如192.168.198.170或者主机名称sybase,但是在hosts文件中必须有对应的ip解析,不然也是被拒绝。下面是修改interfaces文件中的示例:
sybase
master tcp ether 192.168.198.170 5000
query tcp ether 192.168.198.170 5000
sybase
master tcp ether sybase 5000
query tcp ether sybase 5000
/etc/hosts文件添加:
192.168.198.162 pg
192.168.198.163 oracle
192.168.198.170 sybase
3.3 测试
这里使用的是python脚本,因此需要python3.7以上的情况和pyodbc库,如果使用别的测试也可以不消下载,如可以使用图形化连接工具datagrip测试。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]