跟老齐学Python之通过Python连接数据库


Posted in Python onOctober 28, 2014

用Python来编写网站,必须要能够通过python操作数据库,所谓操作数据库,就是通过python实现对数据的连接,以及对记录、字段的各种操作。上一讲提到的那种操作方式,是看官直接通过交互模式来操作数据库。

安装python-MySQLdb

要想通过python来操作数据库,还需要在已经安装了mysql的基础上安装一个称之为mysqldb的库,它是一个接口程序,python通过它对mysql数据实现各种操作。

在编程中,会遇到很多类似的接口程序,通过接口程序对另外一个对象进行操作,比较简单。接口程序就好比钥匙,如果要开锁,人直接用手指去捅,肯定是不行的,那么必须借助工具,插入到锁孔中,把所打开,打开所之后,门开了,就可以操作门里面的东西了。那么打开所的工具就是接口程序。而打开所的工具会有便利与否之分,如果用这锁的钥匙,就便利,如果用别的工具,或许不便利(其实还分人,也就是人开锁的水平,如果是江洋大盗或者小毛贼什么的,擅长开锁,用别的工具也便利了),也就是接口程序不同,编码水平不同,都是考虑因素。

这里下载python-mysqldb:https://pypi.python.org/pypi/MySQL-python/

下载之后就可以安装了。

我这里只能演示ubuntu下安装的过程。

sudo apt-get install python-MySQLdb

在shell中输入上面的命令行,就安装了。看看,多么简洁的安装,请快快用ubuntu吧。我愿意做ubuntu的免费代言。哈哈。

不管什么系统,安装不是难题。安装之后,怎么知道安装的结果呢?

>>> import MySQLdb

在python的交互模式中,输入上面的指令,如果不报错,恭喜你,已经安装好了。如果报错,恭喜你,可以借着错误信息提高自己的计算机水平了,请求助于google大神。

交互模式下操作数据库之连接数据库

操作数据库的前提是先有数据库。

先建立一个数据库。

qw@qw-Latitude-E4300:~$ mysql -u root -p

Enter password:  

打开数据库,正确输入密码之后,呈现下面的结果

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 373

Server version: 5.5.38-0ubuntu0.14.04.1 (Ubuntu)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

在这个状态下,输入如下命令,建立一个数据库:

mysql> create database qiwsirtest character set utf8;

Query OK, 1 row affected (0.00 sec)

注意上面的指令,如果仅仅输入:create database qiwsirtest,也可以,但是,我在后面增加了character set utf8,意思是所建立的数据库qiwsirtest,编码是utf-8的,这样存入汉字就不是乱码了。

看到那一行提示:Query OK, 1 row affected (0.00 sec),就说明这个数据库已经建立好了,名字叫做:qiwsirtest

数据库建立之后,就可以用python通过已经安装的mysqldb来连接这个名字叫做qiwsirtest的库了。进入到python交互模式(现在这个实验室做实验)。

>>> import MySQLdb

>>> conn = MySQLdb.connect(host="localhost",user="root",passwd="123123",db="qiwsirtest",port=3306,charset="utf8")

逐个解释上述命令的含义:

host:等号的后面应该填写mysql数据库的地址,因为就数据库就在本机上(也称作本地),所以使用localhost,注意引号。如果在其它的服务器上,这里应该填写ip地址。一般中小型的网站,数据库和程序都是在同一台服务器(计算机)上,就使用localhost了。

user:登录数据库的用户名,这里一般填写"root",还是要注意引号。当然,如果是比较大型的服务,数据库会提供不同的用户,那时候可以更改为相应用户。但是,不同用户的权限可能不同,所以,在程序中,如果要操作数据库,还要注意所拥有的权限。在这里用root,就放心了,什么权限都有啦。不过,这样做,在大型系统中是应该避免的。

passwd:上述user账户对应的登录mysql的密码。我在上面的例子中用的密码是"123123"。不要忘记引号。

db:就是刚刚通create命令建立的数据库,我建立的数据库名字是"qiwsirtest",还是要注意引号。看官如果建立的数据库名字不是这个,就写自己所建数据库名字。

port:一般情况,mysql的默认端口是3306,当mysql被安装到服务器之后,为了能够允许网络访问,服务器(计算机)要提供一个访问端口给它。

charset:这个设置,在很多教程中都不写,结果在真正进行数据存储的时候,发现有乱码。这里我将qiwsirtest这个数据库的编码设置为utf-8格式,这样就允许存入汉字而无乱码了。注意,在mysql设置中,utf-8写成utf8,没有中间的横线。但是在python文件开头和其它地方设置编码格式的时候,要写成utf-8。切记!

注:connect中的host、user、passwd等可以不写,只有在写的时候按照host、user、passwd、db(可以不写)、port顺序写就可以,注意端口号port=3306还是不要省略的为好,如果没有db在port前面,直接写3306会报错.

其实,关于connect的参数还不少,下面摘抄来自mysqldb官方文档的内容,把所有的参数都列出来,还有相关说明,请看官认真阅读。不过,上面几个是常用的,其它的看情况使用。

Python 相关文章推荐
Python list操作用法总结
Nov 10 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
Feb 11 Python
浅谈Python中的作用域规则和闭包
Mar 20 Python
python实现连续图文识别
Dec 18 Python
详解python tkinter教程-事件绑定
Mar 28 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
Jun 24 Python
对Python _取log的几种方式小结
Jul 25 Python
浅析Python数字类型和字符串类型的内置方法
Dec 22 Python
Django密码存储策略分析
Jan 09 Python
详解python os.path.exists判断文件或文件夹是否存在
Nov 16 Python
Python中Permission denied的解决方案
Apr 02 Python
Pyhton爬虫知识之正则表达式详解
Apr 01 Python
Python对象体系深入分析
Oct 28 #Python
Python中类的继承代码实例
Oct 28 #Python
Python列表list数组array用法实例解析
Oct 28 #Python
python实现无证书加密解密实例
Oct 27 #Python
深入理解Python 代码优化详解
Oct 27 #Python
简单的Python抓taobao图片爬虫
Oct 26 #Python
Python性能优化的20条建议
Oct 25 #Python
You might like
PHP实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
PHP中的integer类型使用分析
2010/07/27 PHP
destoon设置自定义搜索的方法
2014/06/21 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
javascript生成/解析dom的CDATA类型的字段的代码
2007/04/22 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
2016/01/27 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
jQuery插件imgAreaSelect基础讲解
2017/05/26 jQuery
JavaScript订单操作小程序完整版
2017/06/23 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
js实现全选和全不选功能
2020/07/28 Javascript
[06:44]2014DOTA2国际邀请赛-钥匙体育馆开战 开幕式振奋人心
2014/07/19 DOTA
Python的Django框架中从url中捕捉文本的方法
2015/07/20 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
python实现快速文件格式批量转换的方法
2020/10/16 Python
Python self用法详解
2020/11/28 Python
全球知名旅游社区法国站点:TripAdvisor法国
2016/08/03 全球购物
播音主持女孩的自我评价分享
2013/11/20 职场文书
学校食堂采购员岗位职责
2013/12/05 职场文书
2014年毕业演讲稿范文
2014/05/13 职场文书
学生安全承诺书
2014/05/22 职场文书
暂住证明怎么写
2015/06/19 职场文书
初三数学教学反思
2016/02/17 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
python Polars库的使用简介
2021/04/21 Python