分类
Python学习

python3.5 安装使用MySQL支持库

(在苹果系统下,如果文章中的图片不能正常显示,请升级Safari浏览器到最新版本,或者使用Chrome、Firefox浏览器打开。)

用Python做机器学习、大数据、数据挖掘、爬虫什么,基本上都会用到数据库,而我们一般使用的是SQL数据库,即关系数据库。我们最常用的两款关系数据库就是MySQL和SQL Server。本文会介绍如何在Python3下安装对MySQL进行调用的支持库。

很多人都知道python有一个对mysql支持的库,叫MySQL-Python,即mysqldb。然而,在python3中,不再支持mysqldb,取而代之的是PyMySQL。当你试图安装mysqldb的时候会出现如下情况:

me@mycomputer:~ $ sudo pip3 install mysql-python
Collecting mysql-python
  Using cached MySQL-python-1.2.5.zip
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-bn6a9cve/mysql-python/setup.py", line 13, in <module>
        from setup_posix import get_config
      File "/tmp/pip-build-bn6a9cve/mysql-python/setup_posix.py", line 2, in <module>
        from ConfigParser import SafeConfigParser
    ImportError: No module named 'ConfigParser'

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-bn6a9cve/mysql-python/

看提示,是不是以为是缺少了ConfigParser这个模块呢?其实不是的,因为当你安装好这个模块后,这个问题依旧存在,而且,安装后的模块是configparser而不是大写字母的ConfigParser,这是我在安装这个mysqldb模块时候踩的坑,在此向大家提示一下。

我们需要做的是如下:

me@mycomputer:~ $ sudo pip3 install pymysql
Collecting pymysql
  Downloading PyMySQL-0.7.11-py2.py3-none-any.whl (78kB)
    100% |████████████████████████████████| 81kB 75kB/s
Installing collected packages: pymysql
Successfully installed pymysql-0.7.11

这时候,我们运行python3,使用pymysql:

import pymysql.cursors
con = pymysql.connect(host='127.0.0.1',port=3306,user='myuser',password='mypassword',db='test',charset='utf8',cursorclass=pymysql.cursors.DictCursor)
# 执行sql语句
try:
    # 创建游标
    cursor = con.cursor()
    # 执行sql语句,插入记录
    sql = 'INSERT INTO T1 (mainKey, value) VALUES (0, 123)'
    # 执行SQL,并返回收影响行数
    effect_row = cursor.execute(sql);
    # 没有设置默认自动提交,需要主动提交,以保存所执行的语句
    con.commit()
    # 关闭游标
    cursor.close()
finally:
    pass;
# 关闭连接
con.close()

当服务器为Linux系列服务器的时候,默认情况下,直接运行上面的Python3程序会报错,这时候,我们需要在mysql里面做一些关于用户权限的配置。

对于用户myuser,我们在mysql里面执行以下命令来获得指定权限:

mysql> GRANT ALL PRIVILEGES ON test.* TO 'myuser'@'host' IDENTIFIED BY 'mypassword';
mysql> FLUSH PRIVILEGES;

其中,第一行是将对数据库“test”中所有数据表的所有权限赋给用户myuser,并使用指定口令来验证身份,而host那个可以替换为任意的主机名,比如
“localhost”
“127.0.0.1”
“192.168.1.1”等。

如果想匹配任意远程主机的话,那么可以使用%符号来替换host。

如果我们只想将部分权限给用户的话,比如查询权限,那么可以将“ALL PRIVILEGES”替换为“SELECT”,这样,该用户就只能执行数据库的查询操作了。
同理,我们还可以替换为其他操作。比如修改操作“UPDATE”,插入操作“INSERT”,删除记录操作“DELETE”等。

关于权限,mysql可以参考这篇文章:
http://blog.csdn.net/wulantian/article/details/38230635
sqlServer可以参考微软技术文档中的这篇文章:
https://technet.microsoft.com/zh-cn/library/ms178569(v=sql.110).aspx

另外,命令中有“ test.* ”,“test”是数据库database中的“test”数据库,*代表着数据库下所有的表,如果写成具体的某个数据表的话,那么操作将只能针对该表起作用。

第二行则是刷新权限记录,不执行这一句命令的话,会导致前一行命令不能起作用。

当我们执行完上述两行命令之后,再运行我们的Python3程序,就不会报错啦。

当我们需要收回用户权限的时候,可以使用REVOKE来实现:

REVOKE [权限] ON [数据库].[数据表] FROM [用户名];
FLUSH PRIVILEGES;
版权声明
本博客的文章除特别说明外均为原创,本人版权所有。欢迎转载,转载请注明作者及来源链接,谢谢。
本文地址: https://blog.ailemon.net/2017/11/11/python3-5-install-and-use-sql-package/
All articles are under Attribution-NonCommercial-ShareAlike 4.0

关注“AI柠檬博客”微信公众号,及时获取你最需要的干货。


“python3.5 安装使用MySQL支持库”上的1条回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

15 − 1 =

如果您是第一次在本站发布评论,内容将在博主审核后显示,请耐心等待