python通过ODBC连接南大通用数据库,进行数据库查询

环境说明

  • window平台安装了VMware虚拟机(为了安装Gbase 8s数据库),并在window平台通过ODBC连接Gbase 8s数据库,通过pyodbc的DSN方式对数据库进行查询。
  1. Gbase 8s
  2. python3.7
  3. redhat7

数据库服务器配置

  1. 创建实例
    按照官方的Gbase 8s的安装手册进行典型安装,会创建ol_gbasedbt1210数据库实例。
  2. 关闭防火墙
    进入root账户,临时关闭防火墙。(重启电脑后,防火墙自动起来)
    systemctl stop firewalld
  3. 配置数据库的ip地址
    进入root帐号查看所有地址和端口号
    netstat -nptal
  4. 南大数据库gbase mysql 南大数据库 对接_经验分享

  5. gbasedbt用户,找到sqlhosts.ol_gbasedbt1210,用vi指令进行做以下更改
gbase8s       onsoctcp       192.168.0.106  4639
gbase8s_drda   drsoctcp   192.168.0.106  4640
  1. 创建数据库
    创建test3数据库
    进入gbasedbt用户,通过dbaccess --,指令进入DB-Access界面,创建test3数据库,并创建test3path表,字段名有id和path。

win平台配置配置DSN

  1. GBase 8s ODBC Driver 提供 GUI 来配置 DSN
    利用官方提供的ODBC Driver 程序员指南文档安装ODBC驱动。

    以下系列软件会安装在你的电脑上
  2. 配置Setnet32参数
    打开Setnet32之后,对于environment选项不用配置参数
    而Server Information配置如下

    然后Host Information配置如下,usrer name和password填自己的噢~
  3. 配置ODBC数据源驱动
    在控制面板找到管理工具,然后打开:ODBC 数据源(64 位),配置系统DSN,并应用。其中配置参数如下:
    General参数
    Connection参数,并进行测试。
    Environment参数
  4. 向数据库test3插入数据
    打开window平台的ConnetTest Demo软件,配置以下参数,并执行。假如成功的话,那恭喜你连接成功啦~

python环境开发

  1. 安装pyodbc,cmd命令行输入pip install pyodbc
  2. 废话不多说,直接上代码:
# -*- coding: UTF-8 -*-
import pyodbc
import time
'''
python DSN方式找南大通用数据库所有文件路径 new_res
'''
start_time = time.time()
def qidong(DSN):
    db = pyodbc.connect('DSN=gbase')
    cursor = db.cursor()
	
	#连表查询非系统表
    sql_2 = '''select tabname,colname from systables  CROSS JOIN syscolumns  where systables.tabid>99;'''
    cursor.execute(sql_2)
    results = cursor.fetchall()
    new_res = []
    for i in range(0, len(results)):
        try:
            test_sql_1 = '''select * from {0} where {1} like'%.docx% 'or {2} like '%.pdf%' or {3} like '%.txt%'or {4} like '%.jpg%' or {5} like '%.png%' or {6} like '%.xlsx%' or {7} like '%.xlsx%';'''.format(results[i][0],
                                                                                                      results[i][1],
                                                                                                      results[i][1],
                                                                                                      results[i][1],
                                                                                                      results[i][1],
                                                                                                      results[i][1],
                                                                                                      results[i][1],
                                                                                                      results[i][1])
            cursor.execute(test_sql_1)
            results1 = cursor.fetchall()
            # 调用清洗数据函数
            res = drop(results1)
            new_res.append(res)
        except Exception as e:
            pass
            continue
    print(new_res)
#清理数据
def drop(dark_pathfilename):
    res = []
    for item in dark_pathfilename:
        for element in item:
            choices = ['.pdf','.docx','.txt','.jpg','.png','.xlsx','.pptx']
            ele = str(element)
            a =ele.rstrip()
            if type(a) == type('string') and a.endswith(tuple(choices)):
                res.append(a)
    return res
    
qidong(DSN='gbase')

end_time = time.time()
Scanning_time = end_time -start_time
print(f"扫描完毕,使用时间:{Scanning_time}秒")

'''最终结果在find_file_name函数里的new_res'''
  1. 查询结果
[[], [], [], ['weixin.docx', 'C:\\pythonwork\\weixin.docx', 'C:\\pythonwork\\weixin.docx', 'C:\\pythonwork\\weixin.docx', 'C:\\pythonwork\\weixin.pdf', 'C:\\pythonwork\\weixin.pdf', 'C:\\pythonwork\\weixin.pdf', 'C:\\pythonwork\\weixin.pdf', 'C:\\pythonwork\\weixin.pdf', 'C:\\pythonwork\\weixin.pdf', 'C:\\pythonwork\\weixin.pdf', 'C:\\pythonwork\\weixin.xlsx', 'C:\\pythonwork\\qq.pdf', 'C:\\pythonwork\\weixin.png']]

备注:

  1. 如果需要官方安装文档和Gbase 8s或者8t可以在南大通用的官网找到电话,并申请试用。
  2. Gbase 8s和8t安装过程很相似,本文可以作为参考。
  3. 感谢南大通用的产品支持。