连接Python程序与MySQL的教程


Posted in Python onApril 29, 2015

MySQL是Web世界中使用最广泛的数据库服务器。SQLite的特点是轻量级、可嵌入,但不能承受高并发访问,适合桌面和移动应用。而MySQL是为服务器端设计的数据库,能承受高并发访问,同时占用的内存也远远大于SQLite。

此外,MySQL内部有多种数据库引擎,最常用的引擎是支持数据库事务的InnoDB。
安装MySQL

可以直接从MySQL官方网站下载最新的Community Server 5.6.x版本。MySQL是跨平台的,选择对应的平台下载安装文件,安装即可。

安装时,MySQL会提示输入root用户的口令,请务必记清楚。如果怕记不住,就把口令设置为password。

在Windows上,安装时请选择UTF-8编码,以便正确地处理中文。

在Mac或Linux上,需要编辑MySQL的配置文件,把数据库默认的编码全部改为UTF-8。MySQL的配置文件默认存放在/etc/my.cnf或者/etc/mysql/my.cnf:

[client]

default-character-set = utf8
[mysqld]

default-storage-engine = INNODB

character-set-server = utf8

collation-server = utf8_general_ci

重启MySQL后,可以通过MySQL的客户端命令行检查编码:

$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor...
...

mysql> show variables like '%char%';
+--------------------------+--------------------------------------------------------+
| Variable_name      | Value                         |
+--------------------------+--------------------------------------------------------+
| character_set_client   | utf8                          |
| character_set_connection | utf8                          |
| character_set_database  | utf8                          |
| character_set_filesystem | binary                         |
| character_set_results  | utf8                          |
| character_set_server   | utf8                          |
| character_set_system   | utf8                          |
| character_sets_dir    | /usr/local/mysql-5.1.65-osx10.6-x86_64/share/charsets/ |
+--------------------------+--------------------------------------------------------+
8 rows in set (0.00 sec)

看到utf8字样就表示编码设置正确。
安装MySQL驱动

由于MySQL服务器以独立的进程运行,并通过网络对外服务,所以,需要支持Python的MySQL驱动来连接到MySQL服务器。

目前,有两个MySQL驱动:

  1.     mysql-connector-python:是MySQL官方的纯Python驱动;
  2.     MySQL-python:是封装了MySQL C驱动的Python驱动。

可以把两个都装上,使用的时候再决定用哪个:

$ easy_install mysql-connector-python
$ easy_install MySQL-python

我们以mysql-connector-python为例,演示如何连接到MySQL服务器的test数据库:

# 导入MySQL驱动:
>>> import mysql.connector
# 注意把password设为你的root口令:
>>> conn = mysql.connector.connect(user='root', password='password', database='test', use_unicode=True)
>>> cursor = conn.cursor()
# 创建user表:
>>> cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
# 插入一行记录,注意MySQL的占位符是%s:
>>> cursor.execute('insert into user (id, name) values (%s, %s)', ['1', 'Michael'])
>>> cursor.rowcount
1
# 提交事务:
>>> conn.commit()
>>> cursor.close()
# 运行查询:
>>> cursor = conn.cursor()
>>> cursor.execute('select * from user where id = %s', '1')
>>> values = cursor.fetchall()
>>> values
[(u'1', u'Michael')]
# 关闭Cursor和Connection:
>>> cursor.close()
True
>>> conn.close()

由于Python的DB-API定义都是通用的,所以,操作MySQL的数据库代码和SQLite类似。
小结

    MySQL的SQL占位符是%s;

    通常我们在连接MySQL时传入use_unicode=True,让MySQL的DB-API始终返回Unicode。

Python 相关文章推荐
pycharm 使用心得(八)如何调用另一文件中的函数
Jun 06 Python
Python中的自省(反射)详解
Jun 02 Python
python2.7 mayavi 安装图文教程(推荐)
Jun 22 Python
python实现弹窗祝福效果
Apr 07 Python
python对文件目录的操作方法实例总结
Jun 24 Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 Python
linux环境下Django的安装配置详解
Jul 22 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
Oct 25 Python
python解析命令行参数的三种方法详解
Nov 29 Python
基于Python fminunc 的替代方法
Feb 29 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
May 22 Python
Python如何实现后端自定义认证并实现多条件登陆
Jun 22 Python
python实现通过代理服务器访问远程url的方法
Apr 29 #Python
python实现带错误处理功能的远程文件读取方法
Apr 29 #Python
python使用socket远程连接错误处理方法
Apr 29 #Python
python使用socket连接远程服务器的方法
Apr 29 #Python
python使用socket向客户端发送数据的方法
Apr 29 #Python
python使用socket进行简单网络连接的方法
Apr 29 #Python
python基于socket实现网络广播的方法
Apr 29 #Python
You might like
通过对服务器端特性的配置加强php的安全
2006/10/09 PHP
通过缓存数据库结果提高PHP性能的原理介绍
2012/09/05 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
var与Javascript变量隐式声明
2009/09/17 Javascript
基于jQuery的星级评分插件
2011/08/12 Javascript
jquery validate poshytip 自定义样式
2012/11/26 Javascript
使用js 设置url参数
2013/07/08 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
浅谈$(document)和$(window)的区别
2015/07/15 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
Web制作验证码功能实例代码
2017/06/19 Javascript
微信小程序自定义带价格显示日历效果
2018/12/29 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
easy_install python包安装管理工具介绍
2013/02/10 Python
python使用邻接矩阵构造图代码示例
2017/11/10 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
选择Python写网络爬虫的优势和理由
2019/07/07 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
CSS3 box-sizing属性详解
2016/11/15 HTML / CSS
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
三年大学自我鉴定
2014/01/16 职场文书
高中军训感想800字
2014/02/23 职场文书
美术教师岗位职责
2014/03/18 职场文书
百日安全生产活动总结
2014/07/05 职场文书
校长新学期致辞
2015/07/30 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
python中sys模块的介绍与实例
2021/04/17 Python
Django与数据库交互的实现
2021/06/03 Python