[零基础学python]用Python操作数据库(3)
2015-01-05 20:18
197 查看
通过python操作数据库的行为,除了能够完成前面两讲中的操作之外(当然,那是比较常用的),其实任何对数据库进行的操作,都能够通过python-mysqldb来实现。
在上面的连接中,参数
这种连接没有指定具体数据库,接下来就可以用类似
用
如果不选数据库,而是要新建一个数据库,如何操作?
建立数据库之后,就可以选择这个数据库,然后在这个数据库中建立一个数据表。
括号里面是引号,引号里面就是创建数据表的语句,看官一定是熟悉的。这样就在newtest这个数据库中创建了一个名为newusers的表
这是查看表的方式。当然,看官可以在
以上就通过python-mysqldb实现了对数据库和表的建立。
当然,能建就能删除。看官可以自行尝试,在这里就不赘述,原理就是在
注意关闭顺序,和打开的顺序相反。
为什么要关闭?这个问题有点那个了。你把房子里面都收拾好了,如果离开房子,不关门吗?不要以为自己生活在那个理想社会。树欲静而风不止,小偷在行动。更何况,如果不关闭,服务器的内容总塞着那些东西而没有释放,早晚就满了。所以,必须关闭。必须的。
Python文件设置编码 utf-8(文件前面加上 #encoding=utf-8)
MySQL数据库charset=utf8(数据库的设置方法,可以网上搜索)
Python连接MySQL是加上参数 charset=utf8(在前面教程中都这么演示了,很重要)
设置Python的默认编码为 utf-8 (sys.setdefaultencoding(utf-8),这个后面会讲述)
代码示例:
MySQL的配置文件设置也必须配置成utf8 设置 MySQL 的 my.cnf 文件,在 [client]/[mysqld]部分都设置默认的字符集(通常在/etc/mysql/my.cnf):
windows操作系统请看官自己google。
在我的网站上,有完整的本教程目录,邀请您光临,并不吝赐教: www.itdiffer.com
建立数据库
在《用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'\u8001\u9f50', 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
相关文章推荐
- [零基础学python]用Python操作数据库(2)
- Python 边做边学 9.7 数据库操作--查询基础工具(BaseMapper)
- [零基础学python]用Python操作数据库(1)
- [零基础学python]用Python操作数据库(2)
- python连接sqlite(mysql)数据库以及sqlite数据库基础操作
- C#数据库编程基础之部分控件应用及DataGridView的操作
- MySQLdb for Python使用指南/Python的数据库操作
- asp.net2.0数据库操作基础(转)
- [Python]MySQLdb for Python使用指南/Python的数据库操作
- 转-数据库应用基础系列-第2章 并发操作的一致性问题 (1)
- (转)Sybase ASE基础知识:利用Sybase Central简单操作Sybase ASE数据库
- C#数据库编程基础之数据库配置及部分操作数据库技巧
- Python数据库操作手册
- Python数据库操作-数据库创建,插入,触发器
- python struct字节操作pack及copy及基础
- python基础5--文件操作--字符串读写
- python 数据库操作
- java数据库操作基础
- python模块之bsddb: bdb高性能嵌入式数据库 1.基础知识
- Python学习笔记十(pymssql数据库操作)