本次主要介绍3种数据库(MySQL、PostgreSQL、oracle)如何用Python连接。

一、MySQL

MySQL这里介绍三种Python的库来连接,分别是sqlalchemy、MySQLdb、PyMySQL。

1、sqlalchemy

sqlalchemy是python中著名的orm框架,通过这个框架可以不用关心sql语句,就能操作数据库。大大的提高开发效率。当然通过orm来操作数据库会执行很多的数据库冗余操作,降低程序的运行效率。

安装

直接使用pip安装。

pip install sqlalchemy或者easy install sqlalchemy

在Python3.6之后似乎使用MySQLdb不是很方便,索性就用pymysql了。

示例

from sqlalchemy import create_engine
## 地址为127.0.0.1,数据库名称为tipdm
engine = create_engine('mysql+pymysql://root:123456@127.0.0.1:3306/tipdm?charset=utf8')
data = pd.read_sql('select * from all_gzdata',con=engine)

2、MySQLdb

MySQLdb是用于Python链接Mysql数据库的接口,它实现了Python 数据库API规范V2.0,基于MySQL C API上建立的。

安装

直接使用pip安装,MySQLdb模块的名字在pip上叫MySQL-python。

pip install MySQL-python

常用函数

Python DB API 2.0 对事务提供了两个方法:

  • commit() 提交
  • rollback() 回滚

cursor用来执行命令的方法:

  • callproc(self, procname, args) 用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
  • execute(self, query, args) 执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
  • executemany(self, query, args) 执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
  • nextset(self) 移动到下一个结果集

cursor用来接收返回值的方法:

  • fetchall(self) 接收全部的返回结果行
  • fetchmany(self, size=None) 接收size条返回结果行。如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据
  • fetchone(self) 返回一条结果行
  • rowcount 这是一个只读属性,并返回执行execute() 方法后影响的行数
  • scroll(self, value, mode='relative') 移动指针到某一行;如果mode='relative',则表示从当前所在行移动value条,如果 mode='absolute',则表示从结果集的第一行移动value条

示例

import MySQLdb as mdb
# 连接数据库
conn = mdb.connect('localhost', 'root', 'root')conn = mdb.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='test', charset='utf8')# 可以使用关键字参数config = {'host': '127.0.0.1','port': 3306,'user': 'root','passwd': 'root','db': 'test','charset': 'utf8'}# 可以使用字典进行连接参数的管理
conn = mdb.connect(**config)# 如果使用事务引擎,可以设置自动提交事务,或者在每次操作完成后手动提交事务
conn.autocommit(1)    # conn.autocommit(True)# 使用cursor()方法获取操作游标
cursor = conn.cursor()try:# 创建数据库DB_NAME = 'test'cursor.execute('DROP DATABASE IF EXISTS %s' %DB_NAME)cursor.execute('CREATE DATABASE IF NOT EXISTS %s' %DB_NAME)conn.select_db(DB_NAME)#创建表TABLE_NAME = 'user'cursor.execute('CREATE TABLE %s(id int primary key,name varchar(30))' %TABLE_NAME)# 插入单条数据sql = 'INSERT INTO user values("%d","%s")' %(1,"jack")# 不建议直接拼接sql,占位符方面可能会出问题,execute提供了直接传值value = [2,'John']cursor.execute('INSERT INTO test values(%s,%s)',value)# 批量插入数据values = []for i in range(3, 20):values.append((i,'kk'+str(i)))cursor.executemany('INSERT INTO user values(%s,%s)',values)# 查询数据条目count = cursor.execute('SELECT * FROM %s' %TABLE_NAME)print('total records: %d' %count)print('total records:', cursor.rowcount)# 获取表名信息desc = cursor.descriptionprint("%s %3s" % (desc[0][0], desc[1][0]))# 查询一条记录print('fetch one record:')result = cursor.fetchone()print(result)print('id: %s,name: %s' %(result[0],result[1]))# 查询多条记录print('fetch five record:')results = cursor.fetchmany(5)for r in results:print(r)# 查询所有记录# 重置游标位置,偏移量:大于0向后移动;小于0向前移动,mode默认是relative# relative:表示从当前所在的行开始移动; absolute:表示从第一行开始移动cursor.scroll(0,mode='absolute')results = cursor.fetchall()for r in results:print(r)cursor.scroll(-2)results = cursor.fetchall()for r in results:print(r)# 更新记录cursor.execute('UPDATE %s SET name = "%s" WHERE id = %s' %(TABLE_NAME,'Jack',1))# 删除记录cursor.execute('DELETE FROM %s WHERE id = %s' %(TABLE_NAME,2))# 如果没有设置自动提交事务,则这里需要手动提交一次conn.commit()
except:import tracebacktraceback.print_exc()# 发生错误时会滚conn.rollback()
finally:# 关闭游标连接cursor.close()# 关闭数据库连接conn.close()

3、PyMySQL

PyMySQL是一个纯Python写的MySQL客户端,它的目标是替代MySQLdb,可以在CPython、PyPy、IronPython和Jython环境下运行。

PyMySQL的性能和MySQLdb几乎相当,如果对性能要求不是特别的强,使用PyMySQL将更加方便。

PyMySQL的使用方法和MySQLdb几乎一样。

安装

pip install pymysql

示例

import os
import pymysql
import pandas as pd
# 读取数据1
os.getcwd()
os.chdir('E:/')
db = pymysql.connect('localhost','root','123456','tipdm',charset='gbk')
# host: 这个是ip地址,因为我这里是本地的,所以填127.0.0.1,也可以填localhost。
# user:用户名,如果你也是本地的,就填root好了
# passwd:这个是密码
# db:这个是数据库名
# port:这个是端口,本地的一般都是3306
# charset:这个是编码方式,要和你数据库的编码方式一致,要不会连接失败
data = pd.read_sql('select * from all_gzdata',con=db)
db.close()           #关闭连接
# 读取数据2
try:db = pymysql.connect('localhost','root','123456','tipdm',charset='gbk')cursor = db.cursor() # 光标
# 这个是执行sql语句,返回的是影响的条数data = cursor.execute('SELECT * FROM `all_gzdata`')print(cursor.fetchone())print(data)cursor.close() # 关闭光标
except pymysql.Error as e:print(e)print('操作数据库失败')
finally:# 如果连接成功就要关闭数据库if db:db.close()print(cursor.description)
new = dict(zip([x[0] for x in cursor.description],[x for x in cursor.fetchone()]))
print(new)
print(new['title'])
# 上面的只是一条数据的,如果是多条,就需要用到map函数
def new2dict(new):return dict(zip([x[0] for x in cursor.description],[x for x in new]))
news_list = list(map(new2dict,cursor.fetchall()))
print(news_list)

二、PostgreSQL

PostgreSQL可以用Python psycopg2模块集成。 sycopg2是Python编程语言的PostgreSQL数据库的适配器。 其程序代码少,速度快,稳定。

安装

pip install psycopg2

示例

import psycopg2
import pandas as pd
con = psycopg2.connect(database="969368", user="postgres", password="root", host="10.16.15.18", port="5432")data = pd.read_sql('select * from mm_bill',con=con)
data.to_csv('11.csv')
data.ix[1,:]
data.columns

三、oracle

工作中使用的是Oracle数据库,Python有一个模块cx_Oracle可以与Oracle相连。

安装

要使用cx_Oracle,就要先下载。

pip install cx_Oracle

示例

import pandas as pd
import cx_Oracle                                          #引用模块cx_Oracle
# select value from v$parameter where name like '%service_name%' ,查看服务名称
conn=cx_Oracle.connect('dbcustadm/test928@10.16.9.28:1521/crmdb30')    #连接数据库
data = pd.read_sql('select * from cparambase',con = conn) # 获取数据
conn.close()                                                 #关闭cursor

文章未经博主同意,禁止转载!

Python连接多种数据库的方式相关推荐

  1. python处理teradata数据库_【Python连接数据库】Python连接Teradata数据库-ODBC方式(pyodbc包和teradata包)...

    1.安装Python (1)前置安装包查看 rpm -qa |grep -i zlib rpm-qa |grep -i bzip2rpm-qa |grep -i ncurses rpm-qa |gre ...

  2. Python连接Oracle数据库,以字典形式返回结果

    众所周知,Python连接Oracle数据库,一般都使用cx_Oracle这个包. 但关键是cx_Oracle这个包,返回的结果,都是元组或者列表. 如以下代码: 1 import cx_Oracle ...

  3. python连接mysql数据库数据

    使用python连接mysql数据库数据,有以下两种读取数据的方式推荐. 一种是通过游标,及fetch系列方法进行操作,另一种是通过pandas的read_sql()进行读取并操作.各种方法各有优劣, ...

  4. pythonaccess系统_Win7(64位系统)中用Python连接access数据库(access2010)

    [本机是win7 64位操作系统,做数据库实例时需要创建Access数据库的ODBC数据源,但是打开ODBC数据源后发现添加里面没有配置access的连接,如下图:还会弹出以下问题框:# -*- co ...

  5. python 连接SQL数据库18456错误整合

    python 连接SQL数据库18456错误整合 参考资料 环境配置 问题汇总 划重点: 参考资料 链接: sqlserver登录失败18456解决方案. 环境配置 (1)py36 (2)pymssq ...

  6. Java连接mysql数据库的方式,java连接mysql数据库的方式(4句语句)

    1 加载mysql驱动: class.forName("con.mysql.jdbc.Driver").newInstance(); 2 根据数据库路径url,账号,密码进行数据库 ...

  7. Python 技术篇-连接oracle数据库并执行sql语句实例演示,python连接oracle数据库oci详细配置方法

    Python 连接 Oracle 数据库 第一章:连接 oracle 数据与环境配置 ① 连接 oracle 数据库效果演示 ② oci 下载 ③ oci 配置 ④ 环境变量配置 ⑤ 检测是否有 or ...

  8. python链接hbase模块_HBase实战(1):使用Python连接Hbase数据库

    来源于 https://blog.csdn.net/duan_zhihua/java/article/details/80622166 使用Python连接Hbase数据库 1,Hbase下载. 下载 ...

  9. python连接各种数据库数据_Python连接各种数据库

    1.连接Hive数据库 想直接使用python连接hive数据库,貌似有很多包可以选,网上用的比较多的是PyHive和impyla.这里我直接选用了PyHive. Pyhive这个包安装非常容易,这里 ...

  10. Python连接Mysql数据库入门

    Python 连接mysql数据库入门教程 直接上代码 数据库建表省略 要执行哪段代码把#去掉即可:有文字解释 难度 : ⭐⭐(全星5颗星的情况下) import pymysql # 导入模块 根据P ...

最新文章

  1. 记一次解决 quill(vue-quill-editor) 编辑器中莫名多出一行“pbr/p”的过程...
  2. 使用 Feign 调用分页接口报错:Method has too many Body parameters(亲测)
  3. mysql怎么改字体编码_mysql怎么改字符编码?
  4. Sqlite error- INSERT failed: datatype mismatch
  5. Python 用for循环实现猜数字游戏
  6. Linux 下Nginx+Tomcat 完美整合 nginx tomcat 整合方式
  7. renren-fast-vue:关闭ESLint检测
  8. linux 终端 拼音,告诉你Ubuntu中文智能拼音输入法配置的方法及命令
  9. 【知识碎片】JavaScript篇
  10. .atitit.web 推送实现解决方案集合(3)----dwr3 Reverse Ajax
  11. php 时分秒转时分_php 时分秒转为秒,秒转化为天时分秒
  12. 酷派大神9976A刷机
  13. java设计triangle三角形_Java:【三角形类Triangle】设计一个名为Triangle的类来扩展GeometricObject类。该类包括:...
  14. 通过爬虫爬取一些图片
  15. 火狐浏览器Firefox Firebug使用方法
  16. 深入探索 Android 网络优化(一、网络筑基篇)上
  17. 【计算机网络】广域网协议分析
  18. 【OP-TEE】安全存储
  19. PHP 手机靓号规则、正则匹配、号码查询
  20. 腾讯云Windows Server 2012 R2安装wamp2.5提示缺少msvcr100.dll文件的解决方案

热门文章

  1. 【kafka】Flink消费kafka Error sending fetch request
  2. C# 中的委托和事件(详解)
  3. android手表怎样刷机,智能手表是怎样一键刷机的
  4. radius mysql md5_Radius认证
  5. 高数_第3章重积分_三重积分的奇偶性
  6. mysql keepalived配置文件详解_Keepalived配置文件详解
  7. 今天正式入职了字节跳动,分享点经验
  8. 【附源码】计算机毕业设计java学生网上请假系统设计与实现
  9. android短信过滤关键词,iOS 11的垃圾短信按关键词过滤功能使用介绍
  10. linux下编译和安装log4cxx,ubuntu下log4cxx安装使用