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. 部署堡垒机6——配置Nginx及其他组件

    Lina部署 cd /opt wget https://github.com/jumpserver/lina/releases/download/v2.28.7/lina-v2.28.7.tar.gz ...

  2. javaGUI入门之swing(一)

    javaGUI入门之swing(一) 前面学过javafx,发现他们有"异曲同工"之处,demo写起来也类似,无非是类名不一样.个人觉得实现一个桌面应用不应该只看用一种语言一种框架 ...

  3. 未加载mscorlib.pdb

    前言: 早上上班按照正常流程打开Visual Studio,调试本地项目,然后奇怪的是一直提示未加载mscorlib.pdb,导致项目无法正常运行,经过一番折腾最后解决了这个突如其来的bug! 问题重 ...

  4. js-audio-pluging(录音)

    安装 npm i js-audio-recorder 代码 <template> <div class="BaseRecorder"> <div cl ...

  5. 用 Java?试试国产轻量的 Solon v1.10.7

    Java 国产的轻量级应用开发框架.可用来快速开发 Java 应用项目.主框架仅 0.1 MB.Helloworld: @Controller public class App { public st ...

  6. MAC 转 Byte[] 数组

    MAC 转 Byte[] 数组 /** * MAC 地址转 byte[] * 默认以小端序转换 * * @param macAddr "E4:54:E8:81:FC:FD" * @ ...

  7. Go--较复杂的结构类型

    一.List List是一种有序的集合,可以包含任意数量的元素.与数组相比,list的长度可以动态调整,可以随时添加或删除元素,类似于切片 在go中,List是一个双向链表的实现. 实例 packag ...

  8. 开发 | Git 提交规范

    以下是 \(commit\) 提交规范,主要是在提交代码时标识本次提交的属性 feat: 新功能(feature) fix: 修补bug docs: 文档(documentation) style: ...

  9. ZOJ - 1610 区间修改+暴力单点查询

    一.内容 题意:给定[1,8000]区间,给定n组操作,每次将一段区间修改成某种颜色(对上一次颜色进行覆盖),最后问你能看到多少种颜色,且每种颜色有多少段. 二.思路 题目给定的区间是(x, y]左开 ...

  10. 2018年蓝桥杯B组C/C++国赛题解

    1.换零钞 x星球的钞票的面额只有:100元,5元,2元,1元,共4种. 小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱. 小明有点强迫症,他坚持要求200元换出 ...