一、下面我们所说的就是连接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 连接操作数据库(一)的更多相关文章

  1. python 连接操作数据库(二)

    一.我们接着上期的博客继续对ORM框架进行补充,顺便把paramiko模块也给大家讲解一下: 1.ORM框架: 在连接操作数据库的第一个博客中也已经说了,sqlalchemy是一个ORM框架,总结就是 ...

  2. Python连接操作数据库

    步骤: 1.创建与数据库的连接对象: 2.创建游标: 3.通过游标执行语句 4.增删改需要提交(commit)数据 5.关闭连接 如: import MySQLdb   # Python通过MySQL ...

  3. Python——连接操作数据库

    1.安装MySQL驱动程序.下载自动安装包,双击安装即可,非常简单. 2.连接MySQL,下面是Python示例代码. import MySQLdbconn=MySQLdb.connect(host= ...

  4. MySQL---连接器(python如何操作数据库媒介,基于python语言)

    MySQL — 连接器 连接器的概念 它们往往是一类Python包,或者是一类已经写好的Python库.这些库提供了我们Python去连接数据库服务器的基本功能. ​ 既然它是一个包,那么我们首先学会 ...

  5. 【Python实战】使用Python连接Teradata数据库???未完成

    1.安装Python 方法详见:[Python 05]Python开发环境搭建 2.安装Teradata客户端ODBC驱动 安装包地址:TTU下载地址 (1)安装TeraGSS和tdicu(ODBC依 ...

  6. Python连接MySQL数据库的多种方式

    上篇文章分享了windows下载mysql5.7压缩包配置安装mysql 后续可以选择 ①在本地创建一个数据库,使用navicat工具导出远程测试服务器的数据库至本地,用于学习操作,且不影响测试服务器 ...

  7. pymysql模块使用---Python连接MySQL数据库

    pymysql模块使用---Python连接MySQL数据库 浏览目录 pymysql介绍 连接数据库 execute( ) 之 sql 注入 增删改查操作 进阶用法 一.pymysql介绍 1.介绍 ...

  8. 孤荷凌寒自学python第五十一天初次尝试使用python连接Firebase数据库

    孤荷凌寒自学python第五十一天初次尝试使用python连接Firebase数据库 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数据库服 ...

  9. Python 连接Oracle数据库

    连接:python操作oracle数据库  python——连接Oracle数据库 python模块:cx_Oracle, DBUtil 大概步骤: 1. 下载模块 cx_Oracle (注意版本) ...

随机推荐

  1. [POJ] 3461 Oulipo [KMP算法]

    Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 23667   Accepted: 9492 Descripti ...

  2. 转载收藏之用 - 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK

    Senparc.Weixin.MP SDK已经涵盖了微信5.0的所有公共API,以及2013年10月29日升级之后大部分实用的接口. 整个项目的源代码以及已经编译好的程序集可以在这个项目中获取到:ht ...

  3. mysql group_concat函数是有长度限制的

    在表关联查询中,特别是一对多关系的表查询中,group_concat函数是很有用的一个函数,帮助我们减少对数据库查询的次数,减少服务器的压力. 但是今天使用group_concat函数查询数据库时,发 ...

  4. XJOI网上同步训练DAY2 T2

    [问题描述] 火车司机出秦川跳蚤国王下江南共价大爷游长沙.每个周末勤劳的共价大爷都会开车游历长沙市. 长沙市的交通线路可以抽象成为一个

  5. 下一代云计算模式:Docker正掀起个性化商业革命

    作者: 吴宁川  来源: ITValue  发布时间: 2015-09-20 10:41  阅读: 10008 次  推荐: 16   原文链接   [收藏] 文/ITValue 记者吴宁川 从 20 ...

  6. JSP页面中文参数传递get和post方法分析

    原文 http://developer.51cto.com/art/200907/133499.htm 在项目中,我们经常遇到需要在JSP页面切换中传递中文字符.这主要有两种方式. ◆URL方式 例如 ...

  7. HDU 4611Balls Rearrangement(思维)

    Balls Rearrangement Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Othe ...

  8. error C2143 & error C4430

    错误 1 error C2143: 语法错误 : 缺少“;”(在“*”的前面) 错误 2 error C4430: 缺少类型说明符 - 假定为 int.注意: C++ 不支持默认 int 错误 3 e ...

  9. ASP.NET MVC3 系列教程 – 新的Layout布局系统

    原文地址:http://www.cnblogs.com/highend/archive/2011/04/18/asp_net_mvc3_layout.html I:回忆MVC2当中MasterPage ...

  10. Linux 使用yum工具

    Red Hat 发行版安装后无法使用yum,须注册方可使用,可以通过以下方式处理:cd /etc/yum.repos.d/备份目录下已经存在的repo文件,然后新建文件local.repo,具体脚本如 ...