连接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正则表达式 re模块使用说明
May 19 Python
Python多线程编程(七):使用Condition实现复杂同步
Apr 05 Python
解析Python中的二进制位运算符
May 13 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
Jul 15 Python
用Python画一个LinkinPark的logo代码实例
Sep 10 Python
Python3常用内置方法代码实例
Nov 18 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
在python tkinter界面中添加按钮的实例
Mar 04 Python
Django基于Models定制Admin后台实现过程解析
Nov 11 Python
Matplotlib绘制条形图的方法你知道吗
Mar 21 Python
详解PyTorch模型保存与加载
Apr 28 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一些公用函数的集合
2008/03/27 PHP
php 中英文语言转换类
2011/09/07 PHP
php多重接口的实现方法
2015/06/20 PHP
thinkPHP3.2简单实现文件上传的方法
2016/05/16 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
首页图片漂浮效果示例代码
2014/06/05 Javascript
JavaScript中的ArrayBuffer详细介绍
2014/12/08 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
2017/07/21 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
google广告之另类js调用实现代码
2020/08/22 Javascript
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python3基础之函数用法
2014/08/13 Python
简单上手Python中装饰器的使用
2015/07/12 Python
python多线程方式执行多个bat代码
2016/06/07 Python
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
django允许外部访问的实例讲解
2018/05/14 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
Pyqt助手安装PyQt5帮助文档过程图解
2020/11/20 Python
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
阿姆斯特丹杜莎夫人蜡像馆官方网站:Madame Tussauds Amsterdam
2019/03/12 全球购物
采购部主管岗位职责
2014/01/01 职场文书
新年抽奖获奖感言
2014/03/02 职场文书
中学生演讲稿
2014/04/26 职场文书
实名检举信范文
2015/03/02 职场文书
大学毕业生自我评价
2015/03/02 职场文书
2015年教师个人业务工作总结
2015/10/23 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
Python爬虫入门案例之爬取二手房源数据
2021/10/16 Python
python计算列表元素与乘积详情
2022/08/05 Python