python 连接操作数据库(一)
一、下面我们所说的就是连接mysql的应用:
1、其实在python中连接操作mysql的模块有多个,在这里我只给大家演示pymysql这一个模块(其实我是感觉它比较好用而已):
pymysql是第三方的一个模块,需要我们自己安装,在这里顺便给大家普及一下安装第三方模块的知识;首先,如果我们在windows上安装的话,需要先安装python解释器,然后里面自带
了pip模块(我们安装第三方模块,都是需要这个命令去安装的),配置完环境变量之后我们就可以直接在cmd命令行中执行要安装的模块了,如下:

我这里是已经安装过的,所以提示让我更新,在你安装过pymysql模块之后,就可以直接去调用了,下面我们来看一个小例子,根据这个小例子来进行说明:
import pymysql #链接数据库,并创建游标
conn = pymysql.connect(host='192.168.163.131',port=3306,user='mysql_test',passwd='',db='pymysql')
cur = conn.cursor() # cur.execute('create table t1(id INT(10),name VARCHAR(20))ENGINE=InnoDB DEFAULT CHARSET=utf8') # cur.execute('insert into t1(id,name) VALUES (1001,"madaqiang")')
count = cur.executemany('insert into t1(id,name ) VALUES (%s,%s)',[(1002,'eric'),(1003,'tom')]) conn.commit() cur.close()
conn.close()
解释说明:
首先使用pymysql的connect方法去连接数据库,里面的参数我相信大家都能看懂,那个cur是创建的一个游标(执行sql,都是使用这个游标去执行的);下面就开始执行sql语句
注释的那两行,分别是创建一个t1表,然后往里面插入一条数据,下面那个executemany是可以一次插入多条记录,每个记录是一个元祖,count是受影响的行数;最后你需要执行
commit()方法,不然,你做的这些都是白费的,然后把游标和连接都关闭。
简单的连接就是这样的简单。下面我们再来看看游标的问题,相信很多的人一开始的时候跟我一样,对这个游标理解不是那么准确,下面我们来两段代码,你就明白了:
conn = pymysql.connect(host='192.168.163.131',port=3306,user='mysql_test',passwd='',db='pymysql')
cur = conn.cursor()
cur.execute('select * from t1') # cur.scroll(1,mode='relative') #取出第一条数据
line = cur.fetchone()
print(line)
#取出所有的数据
all_line = cur.fetchall()
print(all_line)
conn.commit() cur.close()
conn.close()
首先我们先来看这段代码,其中新增的两条已经在代码中标注了,就是取出第一条数据和所有的数据,但是我们看下面的输出结果,你就会发现一些问题了:
(1001, 'madaqiang')
((1002, 'eric'), (1003, 'tom'))
在你输出第一条数据之后,游标就游到了第二条数据上,你再输出所有的数据,其实就是从第二行开始输出的;如果你不想输出1002这条记录,你可以在第九行的下面加一条这样的语句:
cur.scroll(1,mode='relative'),这样就不会输出了,如果你感觉输出的元祖,以后调用的话会比较麻烦,我们可以设置成输出格式为字典的格式,这样不管是看还是调用都比较方便了:
其实我们只需要在创建游标的下面加上cur = conn.cursor(cursor=pymysql.cursors.DictCursor),这样一行代码就OK了,还是输出一下结果吧,不然总感觉少点什么:
#链接数据库,并创建游标
conn = pymysql.connect(host='192.168.163.131',port=3306,user='mysql_test',passwd='',db='pymysql')
cur = conn.cursor()
#把输出的格式转换成
cur = conn.cursor(cursor=pymysql.cursors.DictCursor) cur.execute('select * from t1') #取出第一条数据
line = cur.fetchone()
print(line) conn.commit() cur.close()
conn.close(
=====================输出结果=======================
{'name': 'madaqiang', 'id': 1001}
2、下面我们再来看看一个ORM框架(SQLAlchemy),
SQLAlchemy是Python世界中最广泛使用的ORM工具之一,它采用了类似与Java里Hibernate的数据映射模型,而不是其他ORM框架采用的Active Record模型,SQLAlchemy分为两部分,一个是常用的ORM对象映射,另一个是核心的SQL expression。第一个很好理解,纯粹的ORM,后面这个不是ORM,而是DBAPI的封装,通过一些sql表达式来避免了直接写sql语句。简单的概括一下就是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。
下面来一下看一下SQLAlchemy的ORM的实现机制,内部封装了些什么:

上图中的Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作,如:
mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]
python 连接操作数据库(一)的更多相关文章
- python 连接操作数据库(二)
一.我们接着上期的博客继续对ORM框架进行补充,顺便把paramiko模块也给大家讲解一下: 1.ORM框架: 在连接操作数据库的第一个博客中也已经说了,sqlalchemy是一个ORM框架,总结就是 ...
- Python连接操作数据库
步骤: 1.创建与数据库的连接对象: 2.创建游标: 3.通过游标执行语句 4.增删改需要提交(commit)数据 5.关闭连接 如: import MySQLdb # Python通过MySQL ...
- Python——连接操作数据库
1.安装MySQL驱动程序.下载自动安装包,双击安装即可,非常简单. 2.连接MySQL,下面是Python示例代码. import MySQLdbconn=MySQLdb.connect(host= ...
- MySQL---连接器(python如何操作数据库媒介,基于python语言)
MySQL — 连接器 连接器的概念 它们往往是一类Python包,或者是一类已经写好的Python库.这些库提供了我们Python去连接数据库服务器的基本功能. 既然它是一个包,那么我们首先学会 ...
- 【Python实战】使用Python连接Teradata数据库???未完成
1.安装Python 方法详见:[Python 05]Python开发环境搭建 2.安装Teradata客户端ODBC驱动 安装包地址:TTU下载地址 (1)安装TeraGSS和tdicu(ODBC依 ...
- Python连接MySQL数据库的多种方式
上篇文章分享了windows下载mysql5.7压缩包配置安装mysql 后续可以选择 ①在本地创建一个数据库,使用navicat工具导出远程测试服务器的数据库至本地,用于学习操作,且不影响测试服务器 ...
- pymysql模块使用---Python连接MySQL数据库
pymysql模块使用---Python连接MySQL数据库 浏览目录 pymysql介绍 连接数据库 execute( ) 之 sql 注入 增删改查操作 进阶用法 一.pymysql介绍 1.介绍 ...
- 孤荷凌寒自学python第五十一天初次尝试使用python连接Firebase数据库
孤荷凌寒自学python第五十一天初次尝试使用python连接Firebase数据库 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数据库服 ...
- Python 连接Oracle数据库
连接:python操作oracle数据库 python——连接Oracle数据库 python模块:cx_Oracle, DBUtil 大概步骤: 1. 下载模块 cx_Oracle (注意版本) ...
随机推荐
- Oracle 10.2数据库管理员指南-27章
27使用调度程序 Oracle Database provides database job capabilities through Oracle Scheduler (the Scheduler) ...
- Matrix Power Series(POJ 3233 构造新矩阵求解+ 快速矩阵幂)
题目大意:给定A,k,m(取模),求解S = A + A2 + A3 + … + Ak. 思路:此题为求解幂的和,一开始直接一个个乘,TLE.时间消耗在累加上.此处巧妙构造新矩阵 p= A 0 ...
- DataTables在回调方法中使用api
$(document).ready(function() { $('#example').dataTable( { "initComplete": function () { va ...
- asp编程中获取上下两个月第一天和最后一天的代码
经常在asp编程遇到要获取上个月第一天和最后一天的日期,获取下个月第一天和最后一天的日期.这里总结了一下,将这些asp代码全部列出来了,以便以后遇到的时候使用. 上个月第一天:<%=dat ...
- js实现选项卡切换的三种方式
前两种主要实现一个选项卡的切换,第三种使用闭包看书,构造函数实现多个选项卡的切换: 1.第一种实现实现效果为: 实现代码为: <!doctype html> <!DOCTYPE ht ...
- 必须弄懂的495个C语言问题
1.1 我如何决定使用那种整数类型? 如果需要大数 值(大于32, 767 或小于¡32, 767), 使用long 型.否则, 如果空间很重要(如有大数组或很多结构), 使用short 型.除此之外 ...
- hdu 3339 In Action
http://acm.hdu.edu.cn/showproblem.php?pid=3339 这道题就是dijkstra+01背包,先求一遍最短路,再用01背包求. #include <cstd ...
- 能让汇编转到C51的初学者有更清晰的认识的一篇文章
8051 是傳統 CISC 架構微控制器的代表,而 PIC 則是現代 RISC 架構微控制器的佳作. 雖然說 RISC 架構是公認未來微控制器的主流,但是 8051 藉著累積多年的發展環境與資源,特別 ...
- 编译型/解释型语言,什么时候用shell
编译型语言 很多传统的程序设计语言,例如Fortran.Ada.Pascal.C.C++和Java,都是编译型语言.这类语言需要预先将我们写好的源代码(source code)转换成目标代码(obje ...
- UIScrollView入门与框架设计
一.概述 1.UIScrollView的contentSize, contentOffSet, contentInsets的作用和使用. 2.UIScrollView的一整个滚动过程的生命周期(开始滚 ...