一、下面我们所说的就是连接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. [0] Tornado Todo 开篇

    参考自: python: tornado例子 Github地址:tornado_todo 开发环境: Python包的安装: 首先安装 pip: sudo apt-get install python ...

  2. hdu 5305Friends

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5305 Problem Description There are n people and m pai ...

  3. js 对url字符转译全解

    1.js 对url进行字符解码设计到3个方法 escape , encodeURI , encodeURIComponent eg: var url='http://baidu.com';encode ...

  4. SIM卡基础,各管脚意义,封装定义

    1. SIM简介 SIM卡(Subscriber Identity Module).即用户识别模块,是一张符合GSM规范的"智慧卡".SIM卡可以插入任何一部符合GSM规范的移动电 ...

  5. PowerShell_零基础自学课程_6_PS中获取帮助信息详解、管道、格式化输

    前些文章陆续的说了一些关于这些主题,但是讨论的都不够深入,今天我们深入的了解一下获取帮助信息.管道以及格式化输出的内容. 一.获取帮助信息 在PS中获取帮助信息,最常用的有: -? .get-comm ...

  6. libusb-win32 在visual studio2008中成功编译回忆录

    关于这个项目不用多说 介绍 libusb是一个针对usb通讯的库. 使用它, 你不需要知道操作系统的细节, 你只需要对USB有足够的了解即可. 它也不需要你写驱动, 所有的工作都可以在用户态完成. 使 ...

  7. 车祸 shit

    今天上班的时候就觉得右眼在那跳,妈的,果不其然,回家路上自行车也跟人家撞上了,郁闷,裤子也坏了,腿也伤了.我还没反应过来,撞一起的是个女的,十七八岁吧,郁闷,什么破自行车.强烈呼吁不要去买小自行车了, ...

  8. jsp中全局变量和局部变量的设置

  9. Linux 程序设计的一些优化措施

    Linux 程序设计的一些优化措施 这些知识是在平常的阅读中,零散的获得的,自己总结了一下,分享在这里 全局变量VS函数参数 全局变量在Linux下的驱动编程里边,用的是非常多,例如中断服务函数ISR ...

  10. jsp判断session中的值

    方法有两种: 假设,此session的名字叫adminAccount 1.EL表达式 <script type="text/javascript"> if($.trim ...