使用ODBC连接Sybase ASE数据库

打印 上一主题 下一主题

主题 996|帖子 996|积分 2988

使用ODBC连接Sybase ASE数据库

1. 本地连接

1.1 下载驱动管理器

1.1.1 下载驱动管理器

  1. yum install unixODBC.x86_64 -y
复制代码
下载相干的包,解决pyodbc无法使用的问题:
https://github.com/mkleehammer/pyodbc/wiki/Install#installing-on-linux
  1. sudo yum install epel-release -y
  2. sudo yum install python3-pip gcc-c++ python3-devel unixODBC-devel -y
  3. pip3 install --user pyodbc
  4. # 如果如要需要信任证书问题直接禁用即可
  5. pip3 install --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org pyodbc
复制代码
1.1.2 查看安装结果

安装好unixODBC驱动管理器后在控制台实行:
  1. (venv) [root@datacheck1 opt]# odbcinst -j
  2. unixODBC 2.3.1
  3. DRIVERS............: /etc/odbcinst.ini
  4. SYSTEM DATA SOURCES: /etc/odbc.ini
  5. FILE DATA SOURCES..: /etc/ODBCDataSources
  6. USER DATA SOURCES..: /root/.odbc.ini
  7. SQLULEN Size.......: 8
  8. SQLLEN Size........: 8
  9. SQLSETPOSIROW Size.: 8
复制代码
查看相干目录的位置
1.2 设置ASE驱动

查看DataAccess/ODBC/samples/readme.txt文件,里面纪录了怎样设置odbc驱动的步骤。
这里主要纪录几个关键点:
64位机ASE驱动位于DataAccess64/ODBC/lib/libsybdrvodb.so处,在修改driver路径时填这个文件的位置。
  1. cd /opt/sybase/DataAccess/ODBC/samples
  2. cat drivertemplate.txt
  3. [Adaptive Server Enterprise]
  4. Description = Sybase ODBC Driver
  5. Driver = /opt/sybase/DataAccess64/ODBC/lib/libsybdrvodb.so
  6. FileUsage = -1
复制代码
修改完设置文件后实行以下命令
  1. odbcinst -i -d -f drivertemplate.txt
复制代码
如许ASE驱动就会乐成启动,可以在**/etc/odbcinst.ini**文件里查看
1.3 设置ASE数据源

  1. cd /opt/sybase/DataAccess/ODBC/samples
  2. cat sampletemplate.txt
  3. [sampledsn]
  4. Description        = SAP ODBC Data Source
  5. UserID                = sa
  6. Password        = 123456
  7. Driver                = Adaptive Server Enterprise
  8. Server                 = sybase
  9. Port                = 5000
  10. Database        = master
  11. UseCursor        = 1
复制代码
修改完设置文件后实行以下命令
  1. odbcinst -i -s -f sampletemplate.txt
复制代码
数据源会加载到**/root/.odbc.ini**文件处
1.4 实行连接脚本

  1. [sybase@localhost ~]$ cat test.py
  2. import pyodbc
  3. conn = pyodbc.connect(
  4.     'DRIVER={Adaptive Server Enterprise};SERVER=sybase;PORT=5000;DATABASE=master;UID=sa;PWD=123456')
  5. print("suceessful")
  6. cursor = conn.cursor()
  7. cursor.execute()
  8. cursor.close()
  9. conn.close()
复制代码
注意这里的设置:
/etc/host文件中:
  1. [sybase@localhost sybase]$ cat /etc/hosts
  2. 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  3. ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  4. 192.168.198.162 pg
  5. 192.168.198.163 oracle
  6. 192.168.198.170 sybase
复制代码
interfaces文件中:
  1. cd /opt/sybase
  2. [sybase@localhost sybase]$ cat interfaces
  3. sybase
  4.         master tcp ether 192.168.198.170 5000
  5.         query tcp ether 192.168.198.170 5000
  6. sybase_BS
  7.         master tcp ether localhost 5001
  8.         query tcp ether localhost 5001
  9. SYBASE_XP
  10.         master tcp ether localhost 5002
  11.         query tcp ether localhost 5002
  12. sybase_JSAGENT
  13.         master tcp ether localhost 4900
  14.         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
2.1 下载rpm包

上面已经给出地址,下载后上传到服务器。
  1. (venv-datacheck-2.5.0) [root@localhost soft]# ll
  2. -rw-r--r--. 1 root root   2893948 8月  20 04:59 devart-odbc-ase.x86_64.rpm
复制代码
2.2 安装rpm包

  1. yum install devart-odbc-ase.x86_64.rpm -y
复制代码
2.3 查看安装结果

安装好unixODBC驱动管理器后在控制台实行:
  1. (venv-datacheck-2.5.0) [root@localhost soft]# odbcinst -j
  2. unixODBC 2.3.1
  3. DRIVERS............: /etc/odbcinst.ini
  4. SYSTEM DATA SOURCES: /etc/odbc.ini
  5. FILE DATA SOURCES..: /etc/ODBCDataSources
  6. USER DATA SOURCES..: /root/.odbc.ini
  7. SQLULEN Size.......: 8
  8. SQLLEN Size........: 8
  9. SQLSETPOSIROW Size.: 8
复制代码
查看相干目录的位置
2.4 编辑设置文件

查看/etc/odbcinst.ini和/etc/odbc.ini文件,里面都已经有了模版。按照之前Sbase ASE提供的模版设置即可。
odbc.ini文件:
  1. [sybase]
  2. Description=Sybase ASE Data Source
  3. Driver=Adaptive Server Enterprise
  4. Server=192.168.198.170
  5. Port=5000
  6. UserID=sa
  7. Password=123456
  8. Database=master
  9. UseCursor=1
  10. [ODBC Data Sources]
  11. DEVART_ASE=Devart ODBC Driver for ASE
  12. [DEVART_ASE]
  13. Driver=Devart ODBC Driver for ASE
  14. Data Source=
  15. Port=5000
  16. Database=
  17. User ID=
  18. Password=
复制代码
odbcinst.ini文件:
  1. [PostgreSQL]
  2. Description=ODBC for PostgreSQL
  3. Driver=/usr/lib/psqlodbcw.so
  4. Setup=/usr/lib/libodbcpsqlS.so
  5. Driver64=/usr/lib64/psqlodbcw.so
  6. Setup64=/usr/lib64/libodbcpsqlS.so
  7. FileUsage=1
  8. =# Driver from the mysql-connector-odbc package
  9. =# Setup from the unixODBC package
  10. [MySQL]
  11. Description=ODBC for MySQL
  12. Driver=/usr/lib/libmyodbc5.so
  13. Setup=/usr/lib/libodbcmyS.so
  14. Driver64=/usr/lib64/libmyodbc5.so
  15. Setup64=/usr/lib64/libodbcmyS.so
  16. FileUsage=1
  17. [Adaptive Server Enterprise]
  18. Description=Sybase ODBC Driver
  19. Driver=/usr/local/devart/odbcase/libdevartodbcase.3.4.1.so
  20. FileUsage=-1
  21. UsageCount=1
  22. [ODBC Drivers]
  23. Devart ODBC Driver for ASE=installed
  24. [Devart ODBC Driver for ASE]
  25. Driver=/usr/local/devart/odbcase/libdevartodbcase.3.4.1.so
复制代码
这里的/usr/local/devart/odbcase/libdevartodbcase.3.4.1.so即为ASE的driver位置。
2.5 实行测试脚本

  1. (venv-datacheck-2.5.0) [root@localhost soft]# cat test.py
  2. import pyodbc
  3. #  参考http://bbs.csdn.net/topics/380063945。
  4. conn = pyodbc.connect(
  5.     'DRIVER={Adaptive Server Enterprise};SERVER=192.168.198.170;PORT=5000;DATABASE=master;UID=sa;PWD=123456')
  6. print("连接成功")
  7. cursor = conn.cursor()
  8. cursor.execute()
  9. cursor.close()
复制代码
3. 问题解答

3.1 将Sybase的driver拷贝

尝试将sybase本地连接上的driver拷贝过来,但是会一直报一个依赖找不到的错误,发起自行下载一下Driver而不是拷贝过来。
3.2 长途连接一直被拒绝

发起将主机地址和名称到场到/etc/hosts文件中,而且请注意interfaces文件中的数据库实例,在这个实例中大概使用localhost,发起改成主机地址如192.168.198.170或者主机名称sybase,但是在hosts文件中必须有对应的ip解析,不然也是被拒绝。下面是修改interfaces文件中的示例:
  1. sybase
  2.         master tcp ether 192.168.198.170 5000
  3.         query tcp ether 192.168.198.170 5000
  4.        
  5. sybase
  6.         master tcp ether sybase 5000
  7.         query tcp ether sybase 5000
复制代码
/etc/hosts文件添加:
  1. 192.168.198.162 pg
  2. 192.168.198.163 oracle
  3. 192.168.198.170 sybase
复制代码
3.3 测试

这里使用的是python脚本,因此需要python3.7以上的情况和pyodbc库,如果使用别的测试也可以不消下载,如可以使用图形化连接工具datagrip测试。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

守听

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表