首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 操作 MySQL 数据库(上)

Python 操作 MySQL 数据库(上)

作者头像
编程文青李狗蛋
发布2019-11-07 15:48:52
1.2K0
发布2019-11-07 15:48:52
举报
本文字数: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 系统):

mysql -h localhost -u root -p

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

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

mysql> show databases;

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

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

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

安装 PyMySQL

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

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

>>> pip3 install PyMySQL

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

>>> import pymysql
>>>

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

连接数据库

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

mysql> create database bookdb character set utf8;
Query OK, 1 row affected, 1 warning (0.12 sec)

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

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

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

>>> import pymysql
>>> dir(pymysql)
['BINARY', 'Binary', 'Connect', 'Connection', 'DATE', 'DATETIME', 'DBAPISet', 'DataError', 'DatabaseError', 'Date', 'DateFromTicks', 'Error', 'FIELD_TYPE', 'IntegrityError', 'InterfaceError', 'InternalError', 'MySQLError', 'N
ULL', 'NUMBER', 'NotSupportedError', 'OperationalError', 'PY2', 'ProgrammingError', 'ROWID', 'STRING', 'TIME', 'TIMESTAMP', 'Time', 'TimeFromTicks', 'Timestamp', 'TimestampFromTicks', 'VERSION', 'VERSION_STRING', 'Warning', '
__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '_auth', '_compat', 'apilevel', 'charset', 'connect', 'connections', 'constants',
'converters', 'cursors', 'err', 'escape_dict', 'escape_sequence', 'escape_string', 'get_client_info', 'install_as_MySQLdb', 'optionfile', 'paramstyle', 'protocol', 'sys', 'thread_safe', 'threadsafety', 'times', 'util', 'versi
on_info']

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

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

>>> help(pymysql.connect)
Help on function Connect in module pymysql:

Connect(*args, **kwargs)
    Connect to the database; see connections.Connection.__init__() for
    more information.

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

>>> conn = pymysql.connect(host = 'localhost',port = 3306,user = 'root',passwd = '123456',db = 'bookdb',charset = 'utf8')

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

  • host:填写 MySQL 服务的地址,我们在学习的时候通常将数据库安装在本地(本机)上,所以使用 localhost 或者 127.0.0.1,注意引号。如果在其它的服务器上,这里应该填写 IP 地址。
  • port:是服务的端口号,默认为 3036,也可以不写,如果不写的话就是默认值。
  • user:登录数据库的用户名。
  • passwd:user 账户登录 MySQL 的密码。
  • db:就是刚刚通过 create 命令创建的数据库。
  • charset:这个设置最好加上设置为 utf8,要不然输入中文的时候可能乱码。

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

写在之后

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

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

The end。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python空间 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档