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. OfficeWeb365任意文件读取

    OfficeWeb365任意文件读取 OfficeWeb365 /Pic/Indexs接口处存在任意文件读取漏洞,攻击者可通过独特的加密方式对payload进行加密,读取任意文件,获取服务器敏感信息, ...

  2. PythonAnywhere 部署Flask项目

    一. 注册账号 官网:https://www.pythonanywhere.com/ 二. 将GitHub上的项目发送至PythonAnywhere 三.配置环境及运行 git clone https ...

  3. 通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程

    最近发现之前的老代码已经不能获取QQ邮箱的Clientkey,经过一番调试后发现QQ邮箱更新了获取的流程,所以决定重新发布一篇文章,废话不多,直接上教程,喜欢的朋友记得点赞加关注. step 1 首先 ...

  4. k8s集群Node节点管理:节点信息查看及节点label标签管理

    k8s集群Node节点管理:节点信息查看及节点label标签管理 Kubernetes集群Node管理 一.查看集群信息 [root@k8s-master1 ~]# kubectl cluster-i ...

  5. 图解带你掌握`JVM`运行时核心内存区

    摘要:堆空间差不多是最大的内存空间,也是运行时数据区最重要的内存空间.堆可以处于物理上不连续的内存空间,但在逻辑上它应该被视为连续的. 本文分享自华为云社区<醒酒菜:动画图解核心内存区--堆&g ...

  6. Seal梁胜:近水楼台先得月,IT人员应充分利用AI解决问题

    2023年9月2日,由平台工程技术社区与数澈软件Seal联合举办的⌈AIGC时代下的平台工程⌋--2023平台工程技术大会在北京圆满收官.吸引了近300名平台工程爱好者现场参会,超过3000名观众在线 ...

  7. Jenkins Blue Ocean

    介绍 Blue Ocean 是 pipeline 的可视化UI.同时兼容经典的自由模式的 job.Jenkins Pipeline 从头开始设计,但仍与自由式作业兼容,Blue Ocean 减少了经典 ...

  8. Bug定级实例

    *1级,**系统崩溃* *定义:*严重阻碍测试和开发工作 *对应**优先级**:**最高* *具体可分为:* 1.功能完全没有实现 2.应用闪退/崩溃无法运行 3*.应用必现安全模式,无法运行* 4. ...

  9. Codeforces Round #704 (Div. 2) A~E

    比赛链接:https://codeforces.com/contest/1492 1492A.Three swimmers 题意: 有三名游泳的人,他们分别需要 \(a,b,c\) 分钟才能在一个游泳 ...

  10. mysql 使用 trim去不掉空格 解决

    使用mysql8.0时 发现 有几个空字符串怎么也过滤不掉,使用 is not null.trim()<>''.length()>=1都不行,最后查了一些资料说 trim只能去除半角 ...