Python 操作数据库(3)
通过python操作数据库的行为,任何对数据库进行的操作,都能够通过python-mysqldb来实现。
建立数据库
之前通过mysql>
写SQL语句,建立了一个名字叫做mytest的数据库,然后用下面的方式跟这个数据库连接
>>> import MySQLdb >>> conn = MySQLdb.connect(host="localhost",user="root",passwd="123123",db="mytest",charset="utf8")
在上面的连接中,参数db="mytest"
其实可以省略,如果省略,就是没有跟任何具体的数据库连接,只是连接了mysql。
>>> import MySQLdb >>> conn = MySQLdb.connect("localhost","root","123123",port=3306,charset="utf8")
这种连接没有指定具体数据库,接下来就可以用类似mysql>
交互模式下的方式进行操作。
>>> conn.select_db("mytest") >>> cur = conn.cursor() >>> cur.execute("select * from users") 11L >>> cur.fetchall() ((1L, u'hiekay', u'123123', u'hiekay@gmail.com'), (2L, u'python', 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'\u5854', u'9988', u'hiekay@gmail.com'), (8L, u'\u5854', u'9988', u'hiekay@gmail.com'), (9L, u'\u5854', u'9988', u'hiekay@gmail.com'), (10L, u'\u5854', u'9988', u'hiekay@gmail.com'), (11L, u'\u5f20\u4e09', u'1122', u'hiekay@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
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
彻底弄懂 Java 线程池原理
概述 这篇文章是我在阅读源码时整理的一些笔记,对源码的关键点进行了比较详细的注释,然后加上一些自己对线程池机制的理解。最终目的是要弄清楚下面这些问题: 线程池有 execute() 和 submit() 方法,执行机制分别是什么? 如何新建线程? 任务如何执行? 线程如何销毁?超时机制如何实现? 首先需要介绍一下线程池的两个重要成员: ctl AtomInteger 类型。高3位存储线程池状态,低29位存储当前线程数量。workerCountOf(c) 返回当前线程数量。runStateOf(c) 返回当前线程池状态。 线程池有如下状态: RUNNING:接收新任务,处理队列任务。 SHUTDOWN:不接收新任务,但处理队列任务。 STOP:不接收新任务,也不处理队列任务,并且中断所有处理中的任务。 TIDYING:所有任务都被终结,有效线程为0。会触发terminated()方法。 TERMINATED:当terminated()方法执行结束。 Worker 这个线程在线程池中的包装类。一个 Worker 代表一个线程。线程池用一个 HashSet 管理这些线程。 需要注意的是,Wo...
- 下一篇
python 开发框架
不管是python,还是php,亦或别的做web项目的语言,乃至于做其它非web项目的开发,一般都要用到一个称之为什么框架的东西。 框架的基本概念 开发这对框架的认识,由于工作习惯和工作内容的不同,有很大差异,这里姑且截取维基百科中的一种定义,之所以要给出一个定义,无非是想有所了解,但是是否知道这个定义,丝毫不影响后面的工作。 软件框架(Software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。 框架的功能类似于基础设施,与具体的软件应用无关,但是提供并实现最为基础的软件架构和体系。软件开发者通常依据特定的框架实现更为复杂的商业运用和业务逻辑。这样的软件应用可以在支持同一种框架的软件系统中运行。 简而言之,框架就是制定一套规范或者规则(思想),大家(程序员)在该规范或者规则(思想)下工作。或者说就是使用别人搭好的舞台,你来做表演。 我比较喜欢最后一句的解释,别人搭好舞台,我来表演。这也就是说,如果我在做web项目的时候,能够省却很多开发工作。的确是。所有,做web开发,要用...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程