资讯专栏INFORMATION COLUMN

[零基础学python]用Python操作数据库(3)

BDEEFE / 2028人阅读

摘要:用选择要操作的数据库,然后通过指针就可以操作这个数据库了。这样就在这个数据库中创建了一个名为的表这是查看表的方式。树欲静而风不止,小偷在行动。所以,要特别提醒诸位注意。

通过python操作数据库的行为,除了能够完成前面两讲中的操作之外(当然,那是比较常用的),其实任何对数据库进行的操作,都能够通过python-mysqldb来实现。

建立数据库

在《用python操作数据库(1)》中,我是通过mysql>写SQL语句,建立了一个名字叫做qiwsirtest的数据库,然后用下面的方式跟这个数据库连接

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

在上面的连接中,参数db="qiwsirtest"其实可以省略,如果省略,就是没有跟任何具体的数据库连接,只是连接了mysql。

>>> import MySQLdb
>>> conn = MySQLdb.connect("localhost","root","123123",port=3306,charset="utf8")

这种连接没有指定具体数据库,接下来就可以用类似mysql>交互模式下的方式进行操作。

>>> conn.select_db("qiwsirtest")
>>> cur = conn.cursor()
>>> cur.execute("select * from users")
7L
>>> cur.fetchall()
((1L, u"qiwsir", u"123123", u"qiwsir@gmail.com"), (2L, u"mypython", u"123456", u"python@gmail.com"), (3L, u"google", u"111222", u"g@gmail.com"), (4L, u"facebook", u"222333", u"f@face.book"), (5L, u"github", u"333444", u"git@hub.com"), (6L, u"docker", u"444555", u"doc@ker.com"), (7L, u"u8001u9f50", u"9988", u"qiwsir@gmail.com"))

conn.select_db()选择要操作的数据库,然后通过指针就可以操作这个数据库了。其它的操作跟前两讲一样了。

如果不选数据库,而是要新建一个数据库,如何操作?

>>> cur = conn.cursor()
>>> cur.execute("create database newtest")
1L

建立数据库之后,就可以选择这个数据库,然后在这个数据库中建立一个数据表。

>>> cur.execute("create table newusers (id int(2) primary key auto_increment, username varchar(20), age int(2), email text)")
0L

括号里面是引号,引号里面就是创建数据表的语句,看官一定是熟悉的。这样就在newtest这个数据库中创建了一个名为newusers的表

>>> cur.execute("show tables")
1L
>>> cur.fetchall()
((u"newusers",),)

这是查看表的方式。当然,看官可以在mysql>交互模式下查看是不是存在这个表。如下:

mysql> use newtest;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-------------------+
| Tables_in_newtest |
+-------------------+
| newusers          |
+-------------------+
1 row in set (0.00 sec)

mysql> desc newusers;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(2)      | NO   | PRI | NULL    | auto_increment |
| username | varchar(20) | YES  |     | NULL    |                |
| age      | int(2)      | YES  |     | NULL    |                |
| email    | text        | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

以上就通过python-mysqldb实现了对数据库和表的建立。

当然,能建就能删除。看官可以自行尝试,在这里就不赘述,原理就是在cur.execute()中写SQL语句。

关闭一切

当进行完有关数据操作之后,最后要做的就是关闭游标(指针)和连接。用如下命令实现:

>>> cur.close()
>>> conn.close()

注意关闭顺序,和打开的顺序相反。

为什么要关闭?这个问题有点那个了。你把房子里面都收拾好了,如果离开房子,不关门吗?不要以为自己生活在那个理想社会。树欲静而风不止,小偷在行动。更何况,如果不关闭,服务器的内容总塞着那些东西而没有释放,早晚就满了。所以,必须关闭。必须的。

关于乱码问题

这个问题是编写web时常常困扰程序员的问题,乱码的本质来自于编码格式的设置混乱。所以,要特别提醒诸位注意。在用python-mysqldb的时候,为了放置乱码,可以做如下统一设置:

Python文件设置编码 utf-8(文件前面加上 #encoding=utf-8)

MySQL数据库charset=utf8(数据库的设置方法,可以网上搜索)

Python连接MySQL是加上参数 charset=utf8(在前面教程中都这么演示了,很重要)

设置Python的默认编码为 utf-8 (sys.setdefaultencoding(utf-8),这个后面会讲述)

代码示例:

#encoding=utf-8

import sys
import MySQLdb

reload(sys)
sys.setdefaultencoding("utf-8")

db=MySQLdb.connect(user="root",charset="utf8") 

MySQL的配置文件设置也必须配置成utf8 设置 MySQL 的 my.cnf 文件,在 [client]/[mysqld]部分都设置默认的字符集(通常在/etc/mysql/my.cnf):

[client] default-character-set = utf8
[mysqld] default-character-set = utf8

windows操作系统请看官自己google。


在我的网站上,有完整的本教程目录,邀请您光临,并不吝赐教: www.itdiffer.com

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

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

相关文章

  • [基础python]有容乃大的list(1)

    摘要:定义在中,用方括号表示一个,在方括号里面,可以是,也可以是类型的数据,甚至也能够是这种布尔值。前面在对进行操作的时候,有一些内置函数,比如,这是去掉左右空格的内置函数,也是的方法。 前面的学习中,我们已经知道了两种python的数据类型:int和str。再强调一下对数据类型的理解,这个世界是由数据组成的,数据可能是数字(注意,别搞混了,数字和数据是有区别的),也可能是文字、或者是声音、...

    lewif 评论0 收藏0
  • [基础Python]正规地说一句话

    摘要:语句,遍列列表字符串字典集合等迭代器,依次处理迭代器中的每个元素。与配合使用处理在程序运行中出现的异常情况。表示此行为空,不运行任何操作。在迭代器函数内使用,用于返回一个元素。恭请到上浏览及时更新的教程零基础学 小孩子刚刚开始学说话的时候,常常是一个字一个字地开始学,比如学说饺子,对他/她来讲,似乎有点难度,大人也聪明,于是就简化了,用饺饺来代替,其实就是让孩子学会一个字就能表达。当然...

    Freeman 评论0 收藏0
  • 基础如何爬虫技术

    摘要:楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,。本文来源知乎作者路人甲链接楚江数据提供网站数据采集和爬虫软件定制开发服务,服务范围涵盖社交网络电子商务分类信息学术研究等。 楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,http://www.chujiangdata.com。 第一:Python爬虫学习系列教程(来源于某博主:htt...

    KunMinX 评论0 收藏0
  • [基础python]print能干的事情

    摘要:在干事情之前,先看看这个东东。行文到此,提醒列位,如果用的,请用,要加个括号。这样的输出算是对前面输出的扩展了。据说,会逐渐逐渐取代前面的。恭请列为到我的上及时更新的内容零基础学 print的一些基本用法,在前面的讲述中也涉及一些,本讲是在复习的基础上,尽量再多点内容。 eval() 在print干事情之前,先看看这个东东。不是没有用,因为说不定某些时候要用到。 >>> help...

    kk_miles 评论0 收藏0
  • [基础Python]dict()的操作方法

    摘要:还有别的方法得到键值吗有一般不是只有一个方法实现某个操作的。删除键值对的方法有两个,但是两者有一点区别,根据删除相应的键值对,并返回该值没有返回值,如果删除键不存在,返回错误用可以把合并到中。 dict的很多方法跟list有类似的地方,下面一一道来,并且会跟list做一个对比 嵌套 嵌套在list中也存在,就是元素是list,在dict中,也有类似的样式: >>> a_list ...

    vpants 评论0 收藏0

发表评论

0条评论

BDEEFE

|高级讲师

TA的文章

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