一、下面我们所说的就是连接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>]

最新文章

  1. JavaScript的模块化之AMD&amp;CMD规范
  2. flex的兼容
  3. sass
  4. MongoDB-权限配置
  5. Java Web 工作技巧总结 16.10
  6. mysql5.6 timestamp
  7. JAVABEAN EJB POJO区别
  8. log tag
  9. 路冉的JavaScript学习笔记-2015年2月5日
  10. SA密钥长度、明文长度和密文长度
  11. MapReduce新版客户端API源码分析
  12. Js Date泣血整理
  13. JS+CSS简单实现DIV遮罩层显示隐藏
  14. 无法识别的配置节 system.serviceModel
  15. 前端笔记之JavaScript(九)定时器&amp;JSON&amp;同步异步/回调函数&amp;函数节流&amp;call/apply
  16. 转,ffmpeg参数中文详细解释
  17. docker端口映射启动报错Error response from daemon: driver failed programming external connectivity on endpoint jms_guacamole
  18. 给力开源,.Net开源地址大收集
  19. SSM框架之整合EhCache
  20. php PDO操作类

热门文章

  1. AngularJS 基础教程二:
  2. final关键字的作用
  3. linux最大文件句柄数量总结
  4. LeetCode_Surrounded Regions
  5. SQL省市区三级表结构
  6. Search in Rotated Sorted Array (I, II) 解答
  7. 《Algorithms 4th Edition》读书笔记——2.4 优先队列(priority queue)-Ⅲ
  8. html天气预报小插件
  9. 使用STS 创建spring配置文件
  10. 使用cx_Freeze 将python3代码打包成.exe程序