Python 操作 MySQL 数据库(上)

本文字数:3964 字

阅读本文大概需要:10 分钟

写在之前

在昨天的文章(

听说你还不会将数据存入文件?

)中我们学习用文件形式将数据保存到磁盘中,虽然这已经是一种不错的方式,但是头秃的大佬们还是发明了更快更便捷的东西:「数据库」。它更具有格式化的特点,并且写入和读取更快更方便。

到目前为止,我们所熟知的主流数据库有三种:

关系型数据库:MySQL,SQL Server,Oracle 等。

非关系型数据库:MongoDB,BigTable(Google) 等。

键值数据库:Apache Cassandra(Facebook),LevelDB(Google) 等。

MySQL 概况

MySQL 是一个使用非常广泛的数据库,很多网站都在用。MySQL 在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛应用在 Internet 上的中小型网站中。随着它的不断成熟,MySQL 也逐渐用于更多大规模网站和应用,比如 Google 和 Facebook 等网站。我们所熟知的开源软件组合 LAMP 中的 “M”指的就是 MySQL。

但在被甲骨文公司收购后,Oracle 大幅调涨了 MySQL 商业版的售价,并且它不再支持另一个自由软件项目的发展,导致一些原先使用 MySQL 的开源软件逐渐流向其它数据库,但是不管怎样,MySQL 依然是一个不错的数据库选择,足够支持我们完成一个不小的网站。

MySQL 安装

你要用 MySQL,首先就得安装它,因为每个人用的操作系统不一样,所以我就不在这单独说安装的问题,你可以去 Google,网上很多教程都很详细。当然,你按照别人的流程安装,可能会很成功的安装好,也可能出现这样那样的问题,能够顺利安装成功无疑是幸运的,但是要我来看,其实期间出现点这样那样的问题才是更幸运的,有机会研究自己碰到的问题,可以提升自己的能力,这是很好的事情,这也是我为什么要写这一小节的原因,不要畏困难如猛虎

MySQL 运行

进入数据库的交互模式中,是操作这个数据库的最基本的方式之一(在这我用的是 windows 系统):

再输入密码以后,出现的情况如下图所示:

如果出现上述图的情况,恭喜你,你已经进入到数据库操作界面了,接下来就可以对这个数据库进行操作。例如:

show databases 的含义是要列出当前已有的数据库,显示的结果如下图所示:

对数据库的操作,除了用命令以外,还可以用一些可视化的工具,比如Navicate 或 phpmyadmin(这是一个基于 PHP 的数据库管理工具,大家不要因为学习 Python 就排斥 PHP)。

关于更多关于数据库的操作的知识我就不再这具体介绍了,想深入学习的可以参考相关书籍。现在我们的 MySQL 已经安装好,但是 Python 还不能操作它,我们还要继续安装 Python 操作数据库的模块 -- PyMySQL。

安装 PyMySQL

PyMySQL 是 Python 操作数据库的模块。我们在实际的编程当中会遇到很多类似的模块,也称之为「接口程序」,通过接口程序对另外一个对象进行操作。我们可以把接口程序比喻成钥匙,如果要开锁的话,你直接用手指去捅是行不通的,必须要借助正确的工具插入到锁孔中才能把锁打开。这个打开锁的工具就是「接口程序」。谁都知道,用对应的钥匙开锁是最好的,如果用别的工具,比如锤子,钻头等虽然也能开,但是不太便利。

PyMySQL 就是打开 MySQL 数据库的钥匙,它的源码保存在 https://github.com/PyMySQL,大家可以下载源码进行安装。下面说一个别的安装方式:

一行命令搞定,简单快捷高效不秃顶,提高生产力。安装之后,在 Python 交互模式下运行如下命令:

如果不报错,恭喜你,你已经安装成功了;如果报错了,那也恭喜你,你可以借助错误信息提高自己的能力了。

连接数据库

在连接数据库以前,我们首先要建立数据库。我们先来进入到数据库操作页面,然后输入如下命令,建立一个数据库:

注意上面的指令,如果仅仅是输入 create database bookdb 也可以,但是我在后面增加了 character set utf8,意思是所建立的数据库 bookdb,编码是 utf8,这样我们要是存入汉字的话就不会乱码了。

看到下面的一行提示:Query OK, 1 row affected, 1 warning (0.12 sec),说明这个数据库已经建立好了,名字就叫 bookdb。

数据库建立之后,就可以用 python 通过已经安装的 PyMySQL 模块来连接这个名字叫做 bookdb 的数据库了。

如果你是一路看着我的文章走过来的老读者,你可能会发现每学一个新知识的时候,我都会用 dir(),希望你要重视这个东西。观察一个这个模块里面给我提供的方法,相信大家也能对某些功能猜测到一二。

接下来我们准备连接已经建立好的数据库 bookdb,你是否能看到上面有一个 connect() 方法呢?为了验证我们的猜测,要继续使用 help() 看文档。

从上面我们可以看到(只截取了一部分),connetc() 就是我们要找的东西,并且列出了各个参数的含义。下面我们就来试一试:

上面括号里的是几个常用的参数,下面逐个给大家解释一下:

host:填写 MySQL 服务的地址,我们在学习的时候通常将数据库安装在本地(本机)上,所以使用 localhost 或者 127.0.0.1,注意引号。如果在其它的服务器上,这里应该填写 IP 地址。

port:是服务的端口号,默认为 3036,也可以不写,如果不写的话就是默认值。

user:登录数据库的用户名。

passwd:user 账户登录 MySQL 的密码。

db:就是刚刚通过 create 命令创建的数据库。

charset:这个设置最好加上设置为 utf8,要不然输入中文的时候可能乱码。

其实关于 connect 的参数还有别的,大家可以通过帮助信息进行查看。至此,已经完成了对数据库的连接。

写在之后

就数据库而言,连接之后肯定还有其它操作。我们目前创建的这个叫做 bookdb 的数据库仅仅是个空架子,没有什么可操作的,要操作它就要在里面建立「表」。在下一篇文章中我会详细的介绍如何用 Python 操作数据库,算是实战了,只有在实际的应用中才能更好的学会知识。

如果你觉得本篇文章对你有帮助的话,希望多多点赞支持一下,如果你有什么问题欢迎在后台或者加我微信,我们一起交流一下。

The end。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180922A0AW1U00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券