资讯专栏INFORMATION COLUMN

[零基础学python]通过Python连接数据库

hover_lew / 1012人阅读

摘要:用来编写网站,必须要能够通过操作数据库,所谓操作数据库,就是通过实现对数据的连接,以及对记录字段的各种操作。交互模式下操作数据库之连接数据库操作数据库的前提是先有数据库。先建立一个数据库。

用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官方文档的内容,把所有的参数都列出来,还有相关说明,请看官认真阅读。不过,上面几个是常用的,其它的看情况使用。

connect(parameters...)

  

Constructor for creating a connection to the database. Returns a Connection Object. Parameters are the same as for the MySQL C API. In addition, there are a few additional keywords that correspond to what you would pass mysql_options() before connecting. Note that some parameters must be specified as keyword arguments! The default value for each parameter is NULL or zero, as appropriate. Consult the MySQL documentation for more details. The important parameters are:

host: name of host to connect to. Default: use the local host via a UNIX socket (where applicable)

user: user to authenticate as. Default: current effective user.

passwd: password to authenticate with. Default: no password.

db: database to use. Default: no default database.

port: TCP port of MySQL server. Default: standard port (3306).

unix_socket: location of UNIX socket. Default: use default location or TCP for remote hosts.

conv: type conversion dictionary. Default: a copy of MySQLdb.converters.conversions

compress: Enable protocol compression. Default: no compression.

connect_timeout: Abort if connect is not completed within given number of seconds. Default: no timeout (?)

named_pipe: Use a named pipe (Windows). Default: don"t.

init_command: Initial command to issue to server upon connection. Default: Nothing.

read_default_file: MySQL configuration file to read; see the MySQL documentation for mysql_options().

read_default_group: Default group to read; see the MySQL documentation for mysql_options().

cursorclass: cursor class that cursor() uses, unless overridden. Default: MySQLdb.cursors.Cursor. This must be a keyword parameter.

use_unicode: If True, CHAR and VARCHAR and TEXT columns are returned as Unicode strings, using the configured character set. It is best to set the default encoding in the server configuration, or client configuration (read with read_default_file). If you change the character set after connecting (MySQL-4.1 and later), you"ll need to put the correct character set name in connection.charset.

If False, text-like columns are returned as normal strings, but you can always write Unicode strings.

This must be a keyword parameter.

charset: If present, the connection character set will be changed to this character set, if they are not equal. Support for changing the character set requires MySQL-4.1 and later server; if the server is too old, UnsupportedError will be raised. This option implies use_unicode=True, but you can override this with use_unicode=False, though you probably shouldn"t.

If not present, the default character set is used.

This must be a keyword parameter.

sql_mode: If present, the session SQL mode will be set to the given string. For more information on sql_mode, see the MySQL documentation. Only available for 4.1 and newer servers.

If not present, the session SQL mode will be unchanged.

This must be a keyword parameter.

ssl: This parameter takes a dictionary or mapping, where the keys are parameter names used by the mysql_ssl_set MySQL C API call. If this is set, it initiates an SSL connection to the server; if there is no SSL support in the client, an exception is raised. This must be a keyword parameter.

我已经完成了数据库的连接,虽然是在交互模式下,看官你是否也实现了呢?下一讲,将开始讲述如何操作数据库。


《零基础学python》在线教程:www.itdiffer.com,这里按照章节排列好了,恭请各位光临,并不吝赐教。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37432.html

相关文章

  • [基础python]用Python操作据库(3)

    摘要:用选择要操作的数据库,然后通过指针就可以操作这个数据库了。这样就在这个数据库中创建了一个名为的表这是查看表的方式。树欲静而风不止,小偷在行动。所以,要特别提醒诸位注意。 通过python操作数据库的行为,除了能够完成前面两讲中的操作之外(当然,那是比较常用的),其实任何对数据库进行的操作,都能够通过python-mysqldb来实现。 建立数据库 在《用python操作数据库(1)...

    BDEEFE 评论0 收藏0
  • [基础python]玩转字符串(2)

    摘要:根据这个定义,在里面规定了一些占位符,通过这些占位符来说明那个位置应该填写什么类型的东西,这里暂且了解两个占位符表示那个位置是整数,表示那个位置应该是字符串。啰嗦半天,占位符是不是理解了呢下面我们就用占位符来连接字符串。 上一章中已经讲到连接两个字符串的一种方法。复习一下: >>> a= py >>> b= thon >>> a+b python 既然这是一种方法,言外之意,还有...

    KnewOne 评论0 收藏0
  • [基础Python]玩转字符串(2)(更新发布)

    摘要:根据这个定义,在里面规定了一些占位符,通过这些占位符来说明那个位置应该填写什么类型的东西,这里暂且了解两个占位符表示那个位置是整数,表示那个位置应该是字符串。啰嗦半天,占位符是不是理解了呢下面我们就用占位符来连接字符串。 感谢网友白羽毛的帮助。 上一章中已经讲到连接两个字符串的一种方法。复习一下: >>> a= py >>> b= thon >>> a+b python 既然这...

    yearsj 评论0 收藏0
  • [基础python]list和str比较

    摘要:和两种类型数据,有不少相似的地方,也有很大的区别。偏移量从开始,总元素数减结束。和转化这个内置函数实现的是将转化为。在看例子之前,请看官在交互模式下做如下操作得到了对这个内置函数的完整说明。 list和str两种类型数据,有不少相似的地方,也有很大的区别。本讲对她们做个简要比较,同时也是对前面有关两者的知识复习一下,所谓温故而知新。 相同点 都属于序列类型的数据 所谓序列类型的数...

    codergarden 评论0 收藏0
  • [基础python]用Python操作据库(1)

    摘要:操作数据库要对数据库进行操作,需要先连接它。执行后返回值为受影响的行数。执行单条语句但是重复执行参数列表里的参数返回值为受影响的行数例如,要在数据表中插入一条记录,使得,这样做没有报错,并且返回一个结果,说明有一行记录操作成功。 在上一讲中已经连接了数据库。就数据库而言,连接之后就要对其操作。但是,目前那个名字叫做qiwsirtest的数据仅仅是空架子,没有什么可操作的,要操作它,就必...

    lolomaco 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<