有没有好的python 自带数据库操作数据库教程

python操作数据库
&的操作在现在的里面已经变得十分的好用,有了一套API标准.下面的就是讲讲如何的去使用这套框架定义.此框架包含以下部分
DBI辅助对象
数据类型与定义
如何实现的提示
从1.0到2.0的变化
connect(parameters...) 其中的参数格式如下:
dsn&&&&&& 数据源名称
user&&&&& 用户名(可选)
password& 密码(可选)
host&&&&& 主机名(可选)
database& 数据库名(可选)
& connect(dsn='myhost:MYDB',user='guido',password='234
此标准规定了以下的一些全局变量:
apilevel:表示了DB-API的版本,分'1.0'和'2.0'.如果没有定义,默认为'1.0'
threadsafety:
0&&&& Threads may not share the module.
1&&&& Threads may share the module, but not connections.
2&&&& Threads may share the module and connections.
3&&&& Threads may share the module, connections and cursors.
paramstyle:用于表示参数的传递方法,分为以下五种:
'qmark'&& 问号标识风格. e.g '... WHERE name=?'
'numeric' 数字,占位符风格. e.g '... WHERE name=:1'
'named'&& 命名风格. e.g 'WHERE name=:name'
'format'& ANSI C printf风格. e.g '... WHERE name=%s'
'pyformat' Python扩展表示法. e.g '... WHERE name=%(name)s'
异常类:StandardError
&&&&&&& |__Warning
&&&&&&& |__Error
&&&&&&& |__InterfaceError
&&&&&&& |__DatabaseError
&&&&&&& |__DataError
&&&&&&& |__OperationalError
&&&&&&& |__IntegerityError
&&&&&&& |__InternalError
&&&&&&& |__ProgrammingError
&&&&&&& |__NotSupportedError
连接对象包含如下方法:
用于事务处理里面的提交操作
.rollback()
用于事务处理里面的回滚操作
获得一个游标
游标对象包含如下属性和方法:
.description
一个列表(name,type_code,display_size,internal_size,precision,scale,null_ok) 此属性只有在取得了数据之后才有,不然会是null值
表示返回值的行数.如果没有执行executeXXX()方法或者此模块没有实现这个方法,就会返回-1
.callproc(procname[,parameters])
(此为可选方法,应为不是所有的数据库都支持存储过程的)
.execute(operation[,parameters])
准备并执行一个数据库操作(包括查询和命令)
.executemany(operation,seq_of_parameters)
准备一个数据库命令,然后根据参数执行多次命令
.fetchone()
返回第一行的查询结果
.fetchmany([size=cursor.arraysize])
返回指定个多个行的值
.fetchall()
返回所有的查询结果
.arraysize
这个参数值表示fetchmany默认情况之下获取的行数
数据类型与定义
定义一些常用的数据类型.但是目前用不到,就先不分析
当然,我们要知道的是,这个只是一个标准,一般来说标准里面定义了的会实现,但还有很多特定的实现,我们也需要去掌握哪些东西,不过如果我们将这些标准的掌握了,那么操作一般的就不会有问题了.
下面给出几个数据库相关的网址
Database Topic Guide
Python的数据库使用向导,有相当不错的资料,包括API定义,驱动联结等等
sql/&&MSSQL 驱动
就是MSSQL的驱动程序
下面举的例子是以MSSQL为样板的,但是换成其他的驱动也一样可以做,这个就和Perl的数据库操作十分的类似,可以让我们很方便的实现不同数据库之间的移植工作.
1. 查询数据
import MSSQL
db = MSSQL.connect('SQL Server IP', 'username', 'password', 'db_name')
c = db.cursor()
sql = 'select top 20 rtrim(ip), rtrim(dns) from detail'
c.execute(sql)
for f in c.fetchall():
&& print &ip is %s, dns is %s& % (f[0], f[1])
2. 插入数据
sql = 'insert into detail values('192.168.0.1', '.cn')
c.execute(sql)
3. ODBC的一个例子
import dbi, odbc&&&& # ODBC modules
import time&&&&&&&&& # standard time module
dbc = odbc.odbc(&&&& # open a database connection
&&& 'sample/monty/spam'& # 'datasource/user/password'
crsr = dbc.cursor()& # create a cursor
crsr.execute(&&&&&&& # execute some SQL
&&& SELECT country_id, name, insert_change_date
&&& FROM country
&&& ORDER BY name
print 'Column descriptions:'& # show column descriptions
for col in crsr.description:
&&& print ' ', col
result = crsr.fetchall()&&&&& # fetch the results all at once
print '/nFirst result row:/n ', result[0]& # show first result row
print '/nDate conversions:'&& # play with dbiDate object
date = result[0][-1]
fmt = '& %-25s%-20s'
print fmt % ('standard string:', str(date))
print fmt % ('seconds since epoch:', float(date))
timeTuple = time.localtime(date)
print fmt % ('time tuple:', timeTuple)
print fmt % ('user defined:', time.strftime('%d %B %Y', timeTuple))
-------------------------------output--------------------------------
Column descriptions:&
& ('country_id', 'NUMBER', 12, 10, 10, 0, 0)
& ('name', 'STRING', 45, 45, 0, 0, 0)
& ('insert_change_date', 'DATE', 19, 19, 0, 0, 1)
First result row:
& (24L, 'ARGENTINA', &DbiDate object at 7f1c80&)
Date conversions:
& standard string:&&&&&&&& Fri Dec 19 01:51:53 1997
& seconds since epoch:&&&&
& time tuple:&&&&&&&&&&&&& (, 1, 51, 53, 4, 353, 0)
& user defined:&&&&&&&&&&& 19 December 1997Python入门学习教程:数据库操作,连接MySql数据库
做全栈攻城狮
各位志同道合的同仁可以点击上方关注↑↑↑↑↑↑本教程致力于程序员快速掌握Python语言编程。 本文章内容是基于上次课程Python教程:Python教程:连接数据库,对数据进行增删改查操作和python基础知识之上进行的。如想学习python基础请移步:Python开发实战系列教程-链接汇总,持续更新。数据库增删改查操作。我们打开Navicat 创建一个数据库Manager,并且创建一个数据表:Student并添加初始化数据:传统方式进行增删改查:传统方式进行数据库的连接,可以使用如下引擎进行操作。具体代码如下:MySqlConnector我们首先安装MySqlConnector 模块。下载地址:/cMCmAXMfzrVrS 访问密码 d1e0查询:执行增删改方法:没有消息就是最好的消息。没有返回值 如果没有报错,一般就成功了。具体可以去数据库查看数据。MySqlDb首先安装MySqlDb模块:下载地址/cMCQkJhY2N43I 访问密码 37ff查询:执行增删改方法:TornDb查询:
如果历史有它的规律,今天苹果CEO蒂姆·库克发布全新的iPhone 7之后从讲台上意气风发地走下,转身就要面对苹果股价下跌的窘况。
&来源:东方头条
北京时间今天凌晨举行的苹果秋季新品发布会和以往略有不同,在浓浓的geek技术宅氛围中,又增添了来自日系二次元界的一股清流。
&来源:东方头条
千龙网北京9月8日讯 近日,福建长乐江田镇三溪村一场“土豪”婚礼的视频和图片在网络上疯转。
&来源:千龙网
苹果7正式发布:新增钢琴黑配色; 支持IP67级防水防尘;Home键加入压力感应;耳机口改为Lightning接口...
&来源:新华网
2008年无意中透支了信用卡里面的9元多钱,经过9年利滚利居然变成9000多元。但那么多年他都没有收到银行催促还款的通知。
&来源:参考消息
华为是中国一家纯粹的中国民营企业,并且没有上市圈钱,华为mate9官方也透露了发布时间,最近苹果7频繁透露外包装...
&来源:瓜子科技
最近美国加州有一男子花2000美元买了辆破二手车。开回家后发现车门凸起了一块,他觉得很奇怪。
&来源:每日车讯
感觉现在苹果已经慢慢的走出国人的生活了,毕竟现在的国产机也挺不错的了。虽然今天苹果7凌晨发布,但是70%的网友称:不会买iphone7...
&来源:秀杭网络
当地时间9月7日10点,“果粉们”翘首以盼的时刻终于到来,苹果家族的新成员iPhone 7, Apple Watch2 ...
&来源:东方头条
苹果高管正在台下聊天。 最后13分钟,准备好了吗?舞台上好像看到了Apple Watch,会是新款吗?会场舞台非常漂亮。
&来源:看点全娱乐
北京时间8日凌晨,iPhone7及iPhone7 Plus正式发布......据说很多小伙子都非常激动...
&来源:中国日报
2016苹果秋季发布会结束了,关上直播的老王眼神中充满了难以掩饰的失(xing)落(fen)之前,嘴里絮絮叨叨说着“哎,为了iPhone7...
&来源:赛迪网python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了python数据库操作常用功能使用方法:获取mysql版本、创建表、插入数据、slect获取数据等,下面看示例吧
实例1、取得MYSQL版本
代码如下:# -*- coding: UTF-8 -*-#安装MYSQL DB for pythonimport MySQLdb as mdbcon = Nonetry:&&& #连接mysql的方法:connect('ip','user','password','dbname')&&& con = mdb.connect('localhost', 'root',&&&&&&& 'root', 'test');&&& #所有的查询,都在连接con的一个模块cursor上面运行的&&& cur = con.cursor()&&& #执行一个查询&&& cur.execute("SELECT VERSION()")&&& #取得上个查询的结果,是单个结果&&& data = cur.fetchone()&&& print "Database version : %s " % datafinally:&&& if con:&&&&&&& #无论如何,连接记得关闭&&&&&&& con.close()
执行结果:Database version : 5.5.25
实例2、创建一个表并且插入数据
代码如下:# -*- coding: UTF-8 -*-import MySQLdb as mdbimport sys#将con设定为全局连接con = mdb.connect('localhost', 'root', 'root', 'test');with con:&&& #获取连接的cursor,只有获取了cursor,我们才能进行各种操作&&& cur = con.cursor()&&& #创建一个数据表 writers(id,name)&&& cur.execute("CREATE TABLE IF NOT EXISTS \&&&&&&& Writers(Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(25))")&&& #以下插入了5条数据&&& cur.execute("INSERT INTO Writers(Name) VALUES('Jack London')")&&& cur.execute("INSERT INTO Writers(Name) VALUES('Honore de Balzac')")&&& cur.execute("INSERT INTO Writers(Name) VALUES('Lion Feuchtwanger')")&&& cur.execute("INSERT INTO Writers(Name) VALUES('Emile Zola')")&&& cur.execute("INSERT INTO Writers(Name) VALUES('Truman Capote')")
实例3、python使用slect获取mysql的数据并遍历
代码如下:# -*- coding: UTF-8 -*-import MySQLdb as mdbimport sys#连接mysql,获取连接的对象con = mdb.connect('localhost', 'root', 'root', 'test');with con:&&& #仍然是,第一步要获取连接的cursor对象,用于执行查询&&& cur = con.cursor()&&& #类似于其他语言的query函数,execute是python中的执行查询函数&&& cur.execute("SELECT * FROM Writers")&&& #使用fetchall函数,将结果集(多维元组)存入rows里面&&& rows = cur.fetchall()&&& #依次遍历结果集,发现每个元素,就是表中的一条记录,用一个元组来显示&&& for row in rows:&&&&&&& print row
代码如下:执行结果:(1L, ‘Jack London')(2L, ‘Honore de Balzac')(3L, ‘Lion Feuchtwanger')(4L, ‘Emile Zola')(5L, ‘Truman Capote')
实例4、使用字典cursor取得结果集(可以使用表字段名字访问值)
代码如下:# -*- coding: UTF-8 -*-# 来源:疯狂的蚂蚁的博客总结整理import MySQLdb as mdbimport sys#获得mysql查询的链接对象con = mdb.connect('localhost', 'root', 'root', 'test')with con:&&& #获取连接上的字典cursor,注意获取的方法,&&& #每一个cursor其实都是cursor的子类&&& cur = con.cursor(mdb.cursors.DictCursor)&&& #执行语句不变&&& cur.execute("SELECT * FROM Writers")&&& #获取数据方法不变&&& rows = cur.fetchall()&&& #遍历数据也不变(比上一个更直接一点)&&& for row in rows:&&&&&&& #这里,可以使用键值对的方法,由键名字来获取数据&&&&&&& print "%s %s" % (row["Id"], row["Name"])
实例5、获取单个表的字段名和信息的方法
代码如下:# -*- coding: UTF-8 -*-# 来源:疯狂的蚂蚁的博客总结整理import MySQLdb as mdbimport sys#获取数据库的链接对象con = mdb.connect('localhost', 'root', 'root', 'test')with con:&&& #获取普通的查询cursor&&& cur = con.cursor()&&& cur.execute("SELECT * FROM Writers")&&& rows = cur.fetchall()&&& #获取连接对象的描述信息&&& desc = cur.description&&& print 'cur.description:',desc&&& #打印表头,就是字段名字&&& print "%s %3s" % (desc[0][0], desc[1][0])&&& for row in rows:&&&&&&& #打印结果&&&&&&& print "%2s %3s" % row
代码如下:运行结果: cur.description: ((‘Id', 3, 1, 11, 11, 0, 0), (‘Name', 253, 17, 25, 25, 0, 1))Id Name1 Jack London2 Honore de Balzac3 Lion Feuchtwanger4 Emile Zola5 Truman Capote
实例6、使用Prepared statements执行查询(更安全方便)
代码如下:# -*- coding: UTF-8 -*-# 来源:疯狂的蚂蚁的博客总结整理import MySQLdb as mdbimport syscon = mdb.connect('localhost', 'root', 'root', 'test')with con:&&& cur = con.cursor()&&& #我们看到,这里可以通过写一个可以组装的sql语句来进行&&& cur.execute("UPDATE Writers SET Name = %s WHERE Id = %s",&&&&&&& ("Guy de Maupasant", "4"))&&& #使用cur.rowcount获取影响了多少行&&& print "Number of rows updated: %d" % cur.rowcount结果: 代码如下:Number of rows updated: 1
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具Python链接MySql数据库
Python 链接MySql数据库,方法很简单: 首先需要先 安装一个MySql链接插件:MySQL-python-1.2.3.win-amd64-py2.7.exe 下载地址:/downloads/connector/python/ 在下载安装的时候,最好与Pyth
Python 链接MySql数据库,方法很简单:
首先需要先 安装一个MySql链接插件:MySQL-python-1.2.3.win-amd64-py2.7.exe
下载地址:&/downloads/connector/python/
在下载安装的时候,最好与Python的版本相对应,否则会有些功能不能使用;
在安装完成以后,可以在Python的目录下面看到相应的插件:
Python27/Lib/site-packages
如何测试是否安装成功?
方法1 :cmd -》python -》import MySQLdb 如果没报错,就是安装成功了;
方法2:在eclipse 的文件中输入 import MySQLdb 如果有智能提示,说明安装成功了;
安装成功了,我们马上来试一下效果吧:
#--encoding:utf-8--
import MySQLdb
import datetime
con = MySQLdb.connect(host='localhost',user='root',passwd='',db='employee')
con.set_character_set('utf8')
cursor =con.cursor()
# 查询操作
sql =&select * from users&
cursor.execute(sql)
rows=cursor.fetchall()
for row in rows:
print row[0],row[1],row[2]
cursor.close()
con.close()
将代码中的sql和数据库换成自己的,快去试一下吧!
(责任编辑:最模板)
------分隔线----------------------------
最近需要用到Python来操作excel表,读取表格内容到数据库。所以...
以下方法基本能够解决,Python生成的网页中文乱码的问题。 第一...
需求场景: 有一业务数据库,使用MySQL 5.5版本,每天会写入大量...
Python大法已经被网友们玩儿的出神入化了, 近来有网友用Python写...
先简单介绍下各种 IO 模型: 最容易做的是阻塞 IO,即读写数据...
CopyRight (C)
最模板 , 深圳奇好科技有限公司 All Rights Reserved.

我要回帖

更多关于 python 自带数据库 的文章

 

随机推荐