pyodbc连接Oracle和sqlServer

        我们用数据库都是别人建好的,网上用Python链接Oracle都是cx_Oracle,链接SQLServer推荐的都是pymysql。cx_Oracle确实可以用,但是只支持Oracle11g的客户端,而pymysql在有的现场遇到报错,网上提示都是让改数据库配置,有点不现实,因为毕竟连的是人家的库,我们直接抽取数据。下面介绍一下pyodbc连接Oracle和SQLserver,主要也就是参数问题:

# !/usr/bin/env python
# -*-coding:utf-8 -*-
import pyodbc
a = pyodbc.drivers()
print(a)
# Oracle in OraClient10g_home3
odbc = 'DRIVER={Oracle in OraClient10g_home1};DBQ=127.0.0.1:1521/orcl;UID=user;PWD=password'
db = pyodbc.connect(odbc)
# 使用 cursor()方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute()方法执行 SQL 查询
cursor.execute("select sysdate from dual")
# 使用 fetchall()方法获取所有数据
data = cursor.fetchone()
print(data)
# 关闭数据库连接,此时自动关闭多有游标对象
db.close()

用这个方法可以支持所有已经安装了的Oracle客户端,兼容性比较好。

SQLserver的链接方法

import pyodbc
print(pyodbc.version)
def sqlserver():
    # SERVER 是服务器名称,DATABASE 是数据库名称,UID 是用户名,PWD 是密码
    odbc = 'DRIVER={SQL Server};SERVER=127.0.0.1;DATABASE=name;UID=user;PWD=Password'
    # 打开数据库连接
    db = pyodbc.connect(odbc)
    # 使用 cursor()方法创建一个游标对象 cursor
    cursor = db.cursor()
    # 使用 execute()方法执行 SQL 查询
    cursor.execute(
        "SELECT '1', mzhm, PatientName, SexName, DeviceTypeName, ApplicationID, OperateTime FROM V_ApplicationInfo_MZ "
        "WHERE OperateTime >  getdate() - 1 GROUP BY SexName,mzhm, PatientName,DeviceTypeName, ApplicationID, OperateTime")
    # 使用 fetchall()方法获取所有数据
    data = cursor.fetchall()
    # 关闭数据库连接,此时自动关闭多有游标对象
    db.close()
    return data

上述两段代码亲测有效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值