连接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 相关文章推荐
跟老齐学Python之不要红头文件(1)
Sep 28 Python
在Django中进行用户注册和邮箱验证的方法
May 09 Python
python+selenium实现登录账户后自动点击的示例
Dec 22 Python
Python数字图像处理之霍夫线变换实现详解
Jan 12 Python
python2.7读取文件夹下所有文件名称及内容的方法
Feb 24 Python
python 3调用百度OCR API实现剪贴板文字识别
Sep 04 Python
Python3获取拉勾网招聘信息的方法实例
Apr 03 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
Oct 30 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 Python
浅析Python中字符串的intern机制
Oct 03 Python
python中str内置函数用法总结
Dec 27 Python
python反编译教程之2048小游戏实例
Mar 03 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中mb_strpos的使用
2018/02/04 PHP
jQuery 判断元素上是否绑定了事件
2009/10/28 Javascript
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
使用node.js半年来总结的 10 条经验
2014/08/18 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
Angular2 自定义validators的实现方法
2017/07/05 Javascript
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
JavaScript门面模式详解
2017/10/19 Javascript
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
js中延迟加载和预加载的具体使用
2021/01/14 Javascript
[01:17:47]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
探究Python的Tornado框架对子域名和泛域名的支持
2015/05/02 Python
python黑魔法之编码转换
2016/01/25 Python
Python之自动获取公网IP的实例讲解
2017/10/01 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
2018/08/05 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
python实现感知机模型的示例
2020/09/30 Python
使用HTML5 IndexDB存储图像和文件的示例
2018/11/05 HTML / CSS
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
澳大利亚领先的在线美容商店:Facial Co
2017/10/22 全球购物
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
JVM是一个编译程序还是解释程序
2012/09/11 面试题
会计出纳员的自我评价
2014/01/15 职场文书
优秀学生干部推荐材料
2014/02/03 职场文书
节约用水演讲稿
2014/05/21 职场文书
副总经理党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/06 职场文书
2015年学校医务室工作总结
2015/07/20 职场文书
TaiShan 200服务器安装Ubuntu 18.04的图文教程
2022/06/28 Servers