连接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代码做configure文件
Jul 20 Python
python3 selenium 切换窗口的几种方法小结
May 21 Python
Python装饰器知识点补充
May 28 Python
python删除本地夹里重复文件的方法
Nov 19 Python
Python数据可视化库seaborn的使用总结
Jan 15 Python
运用Python的webbrowser实现定时打开特定网页
Feb 21 Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 Python
pyecharts动态轨迹图的实现示例
Apr 17 Python
基于pandas向csv添加新的行和列
May 25 Python
发工资啦!教你用Python实现邮箱自动群发工资条
May 10 Python
Python爬虫基础讲解之请求
May 13 Python
Python可视化神器pyecharts之绘制箱形图
Jul 07 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
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
PHP XML Expat解析器知识点总结
2019/02/15 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
JavaScript之Map和Set_动力节点Java学院整理
2017/06/29 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
JavaScript图片处理与合成总结
2018/03/04 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
vue引入js数字小键盘的实现代码
2018/05/14 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
vue实现一拉到底的滑动验证
2019/07/25 Javascript
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
Node登录权限验证token验证实现的方法示例
2020/05/25 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
[01:07]DOTA2次级职业联赛 - Fpb战队宣传片
2014/12/01 DOTA
[54:58]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第一场 11.25
2020/11/25 DOTA
盘点提高 Python 代码效率的方法
2014/07/03 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
python多个模块py文件的数据共享实例
2019/01/11 Python
Python中的集合介绍
2019/01/28 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
Python接口开发实现步骤详解
2020/04/26 Python
python能否java成为主流语言吗
2020/06/22 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
美国NBA官方商店:NBA Store
2019/04/12 全球购物
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
外国语学院毕业生自荐信
2013/10/28 职场文书
九月份红领巾广播稿
2014/01/22 职场文书
小学生学雷锋演讲稿
2014/04/25 职场文书
入党后的感想
2015/08/10 职场文书