常见的python连接数据库包

常见的python连接数据库包

在日常的工作学习中,重复的在数据库中抽取数据,然后使用python读取处理,不仅繁琐,且效率低下。那么如果有条件直接使用python读取数据,效率就会有明显提高。同时在一些公司,为了某些数据的保密性,使用线上数据线上处理也变的比较流行了。

下面汇总了一些常见的数据库连接使用方法,希望可以在一定程度上帮助大家。

常见的数据库及连接包

下表中是常用的数据库及连接表使用的包:

数据库连接数据库python包hivepyhive或impylamysqlPyMySQLoraclecx_Oracle从上面的表中我们可以查看常用数据库使用的包,下面我们将简单的表述下

1、hive驱动包安装及环境配置

由于连接数据库需要使用 thrift, sasl, thrift_sasl, thriftpy这几个包, 请提前安装好, 建议用安装对应版本

安装thrift,直接使用pip install thrift ,基本上没有什么异常安装sasl,直接安装包会提示异常异常如下:

解决方式:简单的去包大全的https://www.lfd.uci.edu/~gohlke/pythonlibs/ ,上下载一个对应包的whl文件安装即可thrift_sasl, thriftpy 直接使用pip安装即可

先前的工作已经准备好了,下面进行下一步的工作:

pip install pyhive

pyhive的使用方法如下:

from pyhive import hive

import thrift

import sasl

import thrift_sasl

conn = hive.Connection(host='192.168.154.201', port=10000, database='xx',auth='xx')

cursor=conn.cursor()

cursor.execute('select * from a1 limit 10')

for result in cursor.fetchall():

print (result)

使用impyla库

pip install impyla

测试代码如下:

from impala.dbapi import connect

conn = connect(host='192.168.154.201', port=10000, database='default')

cursor = conn.cursor()

cursor.execute('select * from a1 limit 10')

for result in cursor.fetchall():

print(result)

2、常见的mysql使用方法**

使用 pip install PyMySQL 安装模块

常用的执行语句:

#!/usr/bin/env pytho

# -*- coding:utf-8 -*-

import pymysql

# 创建连接

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='tkq1', charset='utf8')

# 创建游标

cursor = conn.cursor()

# 执行SQL,并返回收影响行数

effect_row = cursor.execute("select * from tb7")

# 执行SQL,并返回受影响行数

#effect_row = cursor.execute("update tb7 set pass = '123' where nid = %s", (11,))

# 执行SQL,并返回受影响行数,执行多次

#effect_row = cursor.executemany("insert into tb7(user,pass,licnese)values(%s,%s,%s)", [("u1","u1pass","11111"),("u2","u2pass","22222")])

# 提交,不然无法保存新建或者修改的数据

conn.commit()

# 关闭游标

cursor.close()

# 关闭连接

conn.close()

2、获取查询数据

#! /usr/bin/env python

# -*- coding:utf-8 -*-

# __author__ = "TKQ"

import pymysql

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='tkq1')

cursor = conn.cursor()

cursor.execute("select * from tb7")

# 获取剩余结果的第一行数据

row_1 = cursor.fetchone()

print row_1

# 获取剩余结果前n行数据

# row_2 = cursor.fetchmany(3)

# 获取剩余结果所有数据

# row_3 = cursor.fetchall()

conn.commit()

cursor.close()

conn.close()

3、获取新创建数据自增ID

可以获取到最新自增的ID,也就是最后插入的一条数据ID

#! /usr/bin/env python

# -*- coding:utf-8 -*-

# __author__ = "TKQ"

import pymysql

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='tkq1')

cursor = conn.cursor()

effect_row = cursor.executemany("insert into tb7(user,pass,licnese)values(%s,%s,%s)", [("u3","u3pass","11113"),("u4","u4pass","22224")])

conn.commit()

cursor.close()

conn.close()

#获取自增id

new_id = cursor.lastrowid

print new_id

4、移动游标

操作都是靠游标,那对游标的控制也是必须的

注:在fetch数据时按照顺序进行,可以使用cursor.scroll(num,mode)来移动游标位置,如:

cursor.scroll(1,mode='relative') # 相对当前位置移动

cursor.scroll(2,mode='absolute') # 相对绝对位置移动

5、fetch数据类型

关于默认获取的数据是元祖类型,如果想要或者字典类型的数据,即:

#! /usr/bin/env python

# -*- coding:utf-8 -*-

# __author__ = "TKQ"

import pymysql

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='tkq1')

#游标设置为字典类型

cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

cursor.execute("select * from tb7")

row_1 = cursor.fetchone()

print row_1 #{u'licnese': 213, u'user': '123', u'nid': 10, u'pass': '213'}

conn.commit()

cursor.close()

conn.close()

3、常见的oracle使用方法

linux下常见的配置可以参考:https://blog.csdn.net/weixin_39684454/article/details/110566240

windows下配置可以参考:https://www.cnblogs.com/lansan0701/p/8039332.html

import cx_Oracle

conn = cx_Oracle.connect('用户名/密码@主机ip地址/orcl') #用自己的实际数据库用户名、密码、主机ip地址 替换即可

curs=conn.cursor()

sql='SELECT * FROM 。。。' #sql语句

rr=curs.execute (sql)

row=curs.fetchone()

print(row[0])

curs.close()

conn.close()

常见的数据库连接介绍完了,基本上可以满足常用数据提取。

相关推荐