Python学习之十四_Python连接各种数据库的方法(DM,oscar,Oracle,SQLSERVER,MYSQL,PG,Kingbase)


前言

想着能够使用多种数据库进行一些操作.
所以本文档讲解对多种数据库的连接方式进行一下总结.
备查

1. Oracle数据库

方式1: jaydebeapi

pip install jaydebeapi
需要注意 此方式需要客户端有jdk.
必须需要指定驱动的目录, 以及驱动的方法函数.
一般写法为: jdbcString = 'oracle.jdbc.driver.OracleDriver'
driverPath = './driver/ojdbc8-19.3.0.0.jar'
urlString = 'jdbc:oracle:thin:@//10.110.xxx.xx:1521/oracle_sid(pdb)'
userName = 'username'
passWord = 'password'
conn = jaydebeapi.connect(jdbcString,urlString,[userName,passWord],driverPath)
cur = conn.cursor()
cur.execute("somesql")
something = cur.fetchall()
cur.close() 方法2: cx-Oracle
注意 这方法必须有 第一 pip install cx_Oracle
必须指定 oracle的instant client的路径.
他不是使用jdk来解析创建连接串, 使用的oracle 的客户端.
这个方法稍微繁琐一些. import cx_Oracle
import configparser
from sqlalchemy import create_engine
import os
os.environ['path'] = r'D:\work\instantclient_12_2' config = configparser.ConfigParser()
config.read('cx.ini',encoding='utf-8') ip = config.get('cx', 'ip')
port = config.get('cx', 'port')
uname = config.get('cx', 'uname')
pwd = config.get('cx', 'pwd')
tnsname = config.get('cx', 'tnsname') dsnStr = cx_Oracle.makedsn(ip, port, service_name=tnsname)
connect_str = "oracle://%s:%s@%s" %(uname, pwd, dsnStr)
engine = create_engine(connect_str) conn = cx_Oracle.connect(uname, pwd, dsn=dsnStr) cur = conn.cursor()
cur.execute("somesql")
something = cur.fetchall()
cur.close()

2. Mysql数据库

# Mysql作为开源数据库, python的支持其实非常简单
# 但是需要注意的是 pymysql的结果集是tuple.
# 其他的数据库基本上都是 list 所以建议将结果做一下显示转换, 避免有问题. pip install pymysql import pymysql connmysql = pymysql.connect(
user = 'user',
password = 'password',
port = Server_port,
host = 'Server_ip',
database = 'databasename'
) cur = connmysql.cursor()
cur.execute("somesql")
something = cur.fetchall()
somethinglist = list(something)
cur.close()

3. PG数据库

# 可以看到. Mysql与PG的连接字符串非常接近
# 但是需要注意,换了一个module的名字.
pip install psycopg2 import psycopg2
connpg = psycopg2.connect(
user = 'user',
password = 'password',
port = Server_port,
host = 'Server_ip',
database = 'databasename'
)
cur = connpg.cursor()
cur.execute("somesql")
something = cur.fetchall()
cur.close()

4. 人大金仓数据库

# 人大金仓可以直接使用PG数据库进行连接.
# 连接字符串是一模一样的.
# 需要先定义 conn 方法为 module.connect(五个元素)
# 然后cur = conn.cursor() 打开游标.
# 然后 cur.execute(somesql)
# 最后在通过 result = cur.fetchall() 获取数据就可以了. pip install psycopg2 import psycopg2
connpg = psycopg2.connect(
user = 'user',
password = 'password',
port = Server_port,
host = 'Server_ip',
database = 'databasename'
)
cur = connpg.cursor()
cur.execute("somesql")
something = cur.fetchall()
cur.close()

5.达梦数据库

# 达梦数据库有自己的ptyhon包需要进行如下处理
# pip install dmPython
# 但是需要注意. 在引入之前还需要将部分文件放到 site-packages 目录下面
# 将 达梦数据库管理系统安装程序中的:C:\dmdbms\drivers\dpi 中所有的文件复制到
# python 依赖包中 与 dmPython.cp36-win32.pyd 相同的目录下. import dmPython
conndm = dmPython.connect(
user = 'user',
password = 'password',
server = 'Server_ip',
port = Server_port
)
curdm = conndm.cursor()
curdm.execute(getsql)
dmresult = curdm.fetchall()
curdm.close()

6. SQLSERVER数据库

# 需要注意 sqlserver 是开源数据库, 对python来收有一些坑.
# 1. 注意链接字符串的最后面需要添加 charset='cp936' 不然中文会乱码 pip install pymssql import pymssql
import configparser config = configparser.ConfigParser()
config.read('sqlserverv.ini',encoding='utf-8') mssip = config.get('MSSQL','ip')
mssuser = config.get('MSSQL','user')
msspassword = config.get('MSSQL','password')
mssdb = config.get('MSSQL','dbname')
connmss = pymssql.connect(mssip,mssuser,msspassword,mssdb,charset='cp936') curmss = connmss.cursor()
curmss.execute(getsql)
mssresult = curmss.fetchall()
curmss.close()

7. 神通数据库

本来计划使用 STPython
但是发现不好用. 退而求其次准备使用 jaydebeapi 的方式. 首先配置信息为:
[OSCAR]
jdbcString=com.oscar.Driver
driverPath=./driver/oscarJDBC8.jar
urlString=jdbc:oscar://10.110.xxx.xxx:2003/osrdb
userName=xxx
passWord=xxxx 创建连接为:
import configparser
import jaydebeapi config = configparser.ConfigParser()
config.read('oscar.ini',encoding='utf-8')
jdbcString = config.get('OSCAR', 'jdbcString')
driverPath = config.get('OSCAR', 'driverPath')
urlString = config.get('OSCAR', 'urlString')
userName = config.get('OSCAR', 'userName')
passWord = config.get('OSCAR', 'passWord')
connoscar = jaydebeapi.connect(jdbcString, urlString, [userName, passWord], driverPath) curoscar = connoscar.cursor()
curoscar.execute(getsql)
oscarresult = curoscar.fetchall() curoscar.close()

Python学习之十四_Python连接各种数据库的方法(DM,oscar,Oracle,SQLSERVER,MYSQL,PG,Kingbase的更多相关文章

  1. Python学习(十四) —— 并发编程

    一.进程的概念 进程即正在执行的一个过程,进程是对正在运行的程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念.操作系统的其它所有内容都是围绕进程的概念展开的. #必备的理论基础 #一 ...

  2. python 学习笔记十四 jQuery案例详解(进阶篇)

    1.选择器和筛选器 案例1 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  3. Python 学习 第十四篇:命名元组

    Python的元组不能为元组内部的数据进行命名,而 collections.namedtuple 可以来构造一个含有字段名称的元组类,命名元组可以通过逗号+字段名来获取元素值: collections ...

  4. python学习(十四) 网络编程

    14.1 少数几个网络设计模块 14.1.1 socket模块 套接字包括:服务器套接字和客户机套接字. 在创建一个服务器套架字后,让它等待连接,这样它就在摸个网络地址处(IP地址和一个端口号的组合) ...

  5. python学习第十四天 -面向对象编程基础

    python也是支持面向对象编程的.这一章节主要讲一些python面向对象编程的一些基础. 什么是面向对象的编程? 1.面向对象编程是一种程序设计范式 2.把程序看做不同对象的相互调用 3.对现实世界 ...

  6. python学习笔记(十 四)、web.py

    使用web.py 通过python进行网页的编写,下面我们来简单了解一哈web.py 的使用 1 url处理 使用特定的url结构来解析我们发送的请求.如下面所示: urls = ( '/login' ...

  7. Python学习第十四篇——类初步使用及面向对象思想

    class Restaurant(): def __init__(self,restaurant_name,cuisine_type): self.name = restaurant_name sel ...

  8. python学习笔记十四:wxPython Demo

    一.简介 wxPython是Python语言的一套优秀的GUI图形库,允许Python程序员很方便的创建完整的.功能键全的GUI用户界面. wxPython是作为优秀的跨平台GUI库wxWidgets ...

  9. python学习笔记(十四): unittest

    Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 在说unittest之前,先说几个概念: TestC ...

  10. python学习(十四)面向对象

    Python中的面向对象,先写类,会生成类对象,类对象然后创建对象,对象就可以拿来用了. Python支持多重继承. class语句创建类对象,并将其赋值给变量名. class语句内的赋值语句会创建类 ...

随机推荐

  1. ChatGPT 沦为了我的打工仔

    大家好,我是老章 最近在折腾之前搞的R-bookdown网站.Jekyll博客,还有刚上了Astro做的周刊.Astro Starlight做的文档站 R2ML:https://r2ml.zhangl ...

  2. 3大方面升级华为云CCE集群体验,助力集群高效运维管理

    本文分享自华为云社区<华为云从心打造CCE集群升级体验,助力集群高效运维管理>,作者:云容器大未来 . 在云原生时代浪潮的推动下,Kubernetes的发展日新月异,更新的集群版本可以带来 ...

  3. 一文带你掌握Redis操作指南

    摘要:Redis是一种支持Key-Value等多种数据结构的存储系统. Redis是一种支持Key-Value等多种数据结构的存储系统.可用于缓存,事件发布或订阅,高速队列等场景.该数据库使用ANSI ...

  4. 统一元数据,数据湖Catalog让大数据存算分离不再是问题

    摘要:为了解决现阶段大数据存算分离痛点问题,华为云大数据推出重量级数据湖Catalog服务. 1 背景 随着5G.IoT等技术的发展,企业积累了越来越多的数据,需要激发更多的数据价值变现.传统大数据平 ...

  5. ​  appuploader使用教程

    ​ appuploader使用教程 转载:appuploader使用教程 目录 问题解决秘籍 登录失败 don't have access,提示没权限或同意协议 上传后在app管理中心找不到版本提交 ...

  6. iOS应用上架详细图文教程

    ​ App Store作为苹果官方的应用商店,审核严格周期长一直让用户头疼不已,很多app都"死"在了审核这一关,那我们就要放弃iOS用户了吗?当然不是!本期我们从iOS app上 ...

  7. [BitSail] Connector开发详解系列四:Sink、Writer

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 Sink Connector BitSail Sink Connector交互流程介绍 Sink:数据写入组件的生 ...

  8. Solon v1.11.3 发布,第101个发布版本喽

    一个更现代感的 Java 应用开发框架:更快.更小.更自由.没有 Spring,没有 Servlet,没有 JavaEE:独立的轻量生态.主框架仅 0.1 MB. @Controller public ...

  9. Axure 获取验证码

    拖两个矩形框,一个用来做文档输入,一个做获取验证码的按钮 设置全局变量OnLoadVariable的初如值为60 1.用例中的条件:当OnLoadVariable的值不等于0 2.用例中的步骤 禁用& ...

  10. SQL SERVER 查询表结构,导出到Excel 生成代码用

    查询所有表 select * from information_schema.tables SQL SERVER 查询表结构,导出到Excel 生成代码用 --快速查看表结构字段(比较全面的) SEL ...