接着上一篇,该篇讲述使用python对数据库进行基本的CRUD操作,这边以sqlite3为例子,进行说明。sqlite3 是一个非常轻型的数据库,安装和使用它是非常简单的,这边就不进行讲述了。

在python下,已经自带了sqlite3模块,供我们使用,这个模块的用途其实和JAVA当中的jdbc驱动是类似的,通过它,我们就可以非常方便的和sqlite3进行各种操作了。

好了,开始吧。

python的数据库模块有统一的接口标准,所有的操作都有统一的模式,大概是分为以下几步(假设使用的是sqlite3模块):

  1. 用sqlite3.connect()获取数据库的连接,假设连接为conn
  2. 如果我们的操作不需要返回结果,那么就可以直接执行conn.execute(sql)。
  3. 由于数据库事务隔离级别的不同,如果我们执行的是对数据库的修改或者插入,那么我们需要执行conn.commit()
  4. 如果需要返回结果,那么conn.cursor()创建游标对象cursor,通过cursor.execute查询数据库,用cursor.fetchall/cur.fetchone/cur.fetchmany返回查询结果。
  5. 由于数据库事务隔离级别的不同,如果我们执行的是对数据库的修改或者插入,那么我们需要执行cur.commit()
  6. 最后,最重要的是 对conn和cursor进行关闭,cursor.close()、conn.close() (先关闭cursor,在关闭conn)

具体的相关CRUD实现代码如下:

import os
import sqlite3 #根据传入的path获取一个数据库连接,如果path非法,那么创建一个临时的内存数据库
def get_conn(path): conn = sqlite3.connect(path) if os.path.exists(path) and os.path.isfile(path):
print('database path is %s' % format(path))
return conn
else:
conn = None
return sqlite3.connect(':memory')
#获取游标
def get_cursor(conn):
if conn is not None:
return conn.cursor()
else:
return get_conn('').cursor()
#创建表数据
def create_table(conn, sql):
if sql is not None and sql != '':
cursor = get_cursor(conn)
cursor.execute(sql)
conn.commit()
close_all(conn, cursor) #关闭数据库连接
def close_all(conn, cursor):
try:
if cursor is not None:
cursor.close()
finally:
if conn is not None:
conn.close()
#CURD操作,需要返回值,查询是肯定有返回值
def crud(conn, sql, data):
cursor = get_cursor(conn)
n = cursor.execute(sql, data)
print("n", n.rowcount)
fetchall = cursor.fetchall()
conn.commit()
close_all(conn, cursor)
return fetchall
#CRUD操作,不需要返回值,查询是肯定有返回值
def crud(conn, sql, data):
cursor = get_cursor(conn)
n = cursor.execute(sql, data)
conn.commit()
close_all(conn, cursor)

一个简单的例子:

conn = get_conn('D:/temp/sqlite3/test.db')
fetchall = crud(conn, 'select * from student', '') #假设返回的数据有三个字段
for row in fetchall:
print('name: %s, age: %d, address: %s' % (row[0], row[1], row[2]))

好了,上面的代码就是最简单的对python的数据库操作了。

大家如果有什么问题或者文件有什么错误的话,可以留言大家一起探讨!

【程序员技术练级】学习一门脚本语言 python(三)跟数据库打交道的更多相关文章

  1. 【程序员技术练级】学习一门脚本语言 python(一)文件处理

    现在工作上主要用的语言是java,java在企业级的应用上能够发挥很好的用途,但有时候要做一个小功能时,比如批量更新文件,抓取网页等,这时候用java就显得太笨重了.因此就学习了python这门脚本语 ...

  2. 【程序员技术练级】学习一门脚本语言 python(二)遍历本地文件系统

    这篇将讲述怎么使用python来遍历本地文件系统,并把文件按文件大小从小到大排序的一个小例子 在这个例子中,主要会用到python内置的和OS模块的几个函数: os.walk() : 该方法用来遍历指 ...

  3. 【程序员技术练级】熟悉Unix/Linux Shell和常见的命令行(一)文件系统结构和基本操作

    作为程序猿,熟悉一些unix/linux命令行是非常必要的,因为部署服务的服务器现在基本上用的都是unix/linux系统,很少在windows上部署服务的. 今天我们就介绍一些在linux上的文件系 ...

  4. 每个程序员都应该学习使用Python或Ruby

    每个程序员都应该学习使用Python或Ruby 如果你是个学生,你应该会C,C++和Java.还会一些VB,或C#/.NET.多少你还可能开发过一些Web网页,你知道一些HTML,CSS和JavaSc ...

  5. 程序员带你学习安卓开发-XML文档的创建与解析

    这是程序员带你学习安卓开发系列教程.本文章致力于面向对象程序员可以快速学习开发安卓技术. 上篇文章:程序员带你学习安卓开发系列-Android文件存储 因知识连贯性推荐关注头条号:做全栈攻城狮.从头开 ...

  6. 程序员带你学习安卓开发系列-Android文件存储

    这是程序员带你学习安卓开发系列教程.本文章致力于面向对象程序员可以快速学习开发安卓技术. 上篇文章:.Net程序员快速学习安卓开发-布局和点击事件的写法 主要讲解了布局和点击事件的写法. 上篇文章补充 ...

  7. 程序员带你学习安卓开发,十天快速入-对比C#学习java语法

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  8. 好程序员技术分享html5和JavaScript的区别

    好程序员技术分享html5和JavaScript的区别,HTML5广义上讲是前端开发学科的代名词,包含HTML5.CSS3及JavaScript三个重要的部分,是运行在浏览器上应用的统称.如PC端网站 ...

  9. [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …

    [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...

随机推荐

  1. if 判断

    语法一: if 条件: #条件成立时执行的字代码块 代码1 代码2 代码3 示例: sex='female' age=18 is_beautiful=True if sex == 'female' a ...

  2. angular 子路由

    const routes: Routes = [ { path: '', redirectTo: '/home', pathMatch: 'full' }, { path: 'home', compo ...

  3. 2018年第九届蓝桥杯C/C++A组省赛(最后一题)

    第十题 付账问题   [题目描述]    几个人一起出去吃饭是常有的事.但在结帐的时候,常常会出现一些争执.    现在有 n 个人出去吃饭,他们总共消费了 S 元.其中第 i 个人带了 ai 元.幸 ...

  4. 2018数学建模国赛总结(A题/编程选手视角)

    2018数学建模已经告一段落了,先说说基本情况吧,我们队伍专业分别为:金融(A),会计(B),计算机(我),配置还算可以,他们俩会数据分析软件也会写论文,我可以写代码,画图.他们俩打过美赛(M奖),我 ...

  5. kali linux之漏洞扫描

    发现弱点:基于端口服务扫描结果版本信息,搜索已公开的漏洞数据库 使用弱点扫描器实现漏洞管理 弱点扫描类型(扫描结果不能确定是不是准确的,应该综合对待威胁) 主动扫描:有身份验证,无身份验证 被动扫描: ...

  6. loj #6122. 「网络流 24 题」航空路线问题

    #6122. 「网络流 24 题」航空路线问题 题目描述 给定一张航空图,图中顶点代表城市,边代表两个城市间的直通航线.现要求找出一条满足下述限制条件的且途经城市最多的旅行路线. 从最西端城市出发,单 ...

  7. hadoop集群配置方法---mapreduce应用:xml解析+wordcount详解---yarn配置项解析

    注:以下链接均为近期hadoop集群搭建及mapreduce应用开发查找到的资料.使用hadoop2.6.0,其中hadoop集群配置过程下面的文章都有部分参考. hadoop集群配置方法: ---- ...

  8. postgreSQL PL/SQL编程学习笔记(四)

    Errors and Messages 1. Reporting Errors and Messages Use the RAISE statement to report messages and ...

  9. CentOS中源码编译安装Nginx

    1.从官网通过wget命令将Nginx源码包下载到Linux上 ​ Nginx下载页面:http://nginx.org/en/download.html 2.在Linux上安装需要依赖的环境 yum ...

  10. mysql 查询月份数据.

    //查看本月数据 SELECT *FROMcontent_publishWHEREdate_format(publish_time, '%Y %m') = date_format(DATE_SUB(c ...