#python sqlite

#Author : Hongten

#MailTo : [email protected]

#QQ     : 648719819

#Blog   : http://www.cnblogs.com/hongten

#Create : 2013-08-09

#Version: 1.0

#DB-API 2.0 interface for SQLite databases

import sqlite3

import os

‘‘‘SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说

没有独立的维护进程,所有的维护都来自于程序本身。

在python中,使用sqlite3创建数据库的连接,当我们指定的数据库文件不存在的时候

连接对象会自动创建数据库文件;如果数据库文件已经存在,则连接对象不会再创建

数据库文件,而是直接打开该数据库文件。

连接对象可以是硬盘上面的数据库文件,也可以是建立在内存中的,在内存中的数据库

执行完任何操作后,都不需要提交事务的(commit)

创建在硬盘上面: conn = sqlite3.connect(‘c:\\test\\test.db‘)

创建在内存上面: conn = sqlite3.connect(‘"memory:‘)

下面我们一硬盘上面创建数据库文件为例来具体说明:

conn = sqlite3.connect(‘c:\\test\\hongten.db‘)

其中conn对象是数据库链接对象,而对于数据库链接对象来说,具有以下操作:

commit()            --事务提交

rollback()          --事务回滚

close()             --关闭一个数据库链接

cursor()            --创建一个游标

cu = conn.cursor()

这样我们就创建了一个游标对象:cu

在sqlite3中,所有sql语句的执行都要在游标对象的参与下完成

对于游标对象cu,具有以下具体操作:

execute()           --执行一条sql语句

executemany()       --执行多条sql语句

close()             --游标关闭

fetchone()          --从结果中取出一条记录

fetchmany()         --从结果中取出多条记录

fetchall()          --从结果中取出所有记录

scroll()            --游标滚动

‘‘‘

#global var

#数据库文件绝句路径

DB_FILE_PATH = ‘‘

#表名称

TABLE_NAME = ‘‘

#是否打印sql

SHOW_SQL = True

def get_conn(path):

‘‘‘获取到数据库的连接对象,参数为数据库文件的绝对路径

如果传递的参数是存在,并且是文件,那么就返回硬盘上面改

路径下的数据库文件的连接对象;否则,返回内存中的数据接

连接对象‘‘‘

conn = sqlite3.connect(path)

if os.path.exists(path) and os.path.isfile(path):

print(‘硬盘上面:[{}]‘.format(path))

return conn

else:

conn = None

print(‘内存上面:[:memory:]‘)

return sqlite3.connect(‘:memory:‘)

def get_cursor(conn):

‘‘‘该方法是获取数据库的游标对象,参数为数据库的连接对象

如果数据库的连接对象不为None,则返回数据库连接对象所创

建的游标对象;否则返回一个游标对象,该对象是内存中数据

库连接对象所创建的游标对象‘‘‘

if conn is not None:

return conn.cursor()

else:

return get_conn(‘‘).cursor()

###############################################################

####            创建|删除表操作     START

###############################################################

def drop_table(conn, table):

‘‘‘如果表存在,则删除表,如果表中存在数据的时候,使用该

方法的时候要慎用!‘‘‘

if table is not None and table != ‘‘:

sql = ‘DROP TABLE IF EXISTS ‘ + table

if SHOW_SQL:

print(‘执行sql:[{}]‘.format(sql))

cu = get_cursor(conn)

cu.execute(sql)

conn.commit()

print(‘删除数据库表[{}]成功!‘.format(table))

close_all(conn, cu)

else:

print(‘the [{}] is empty or equal None!‘.format(sql))

def create_table(conn, sql):

‘‘‘创建数据库表:student‘‘‘

if sql is not None and sql != ‘‘:

cu = get_cursor(conn)

if SHOW_SQL:

print(‘执行sql:[{}]‘.format(sql))

cu.execute(sql)

conn.commit()

print(‘创建数据库表[student]成功!‘)

close_all(conn, cu)

else:

print(‘the [{}] is empty or equal None!‘.format(sql))

###############################################################

####            创建|删除表操作     END

###############################################################

def close_all(conn, cu):

‘‘‘关闭数据库游标对象和数据库连接对象‘‘‘

try:

if cu is not None:

cu.close()

finally:

if cu is not None:

cu.close()

###############################################################

####            数据库操作CRUD     START

###############################################################

def save(conn, sql, data):

‘‘‘插入数据‘‘‘

if sql is not None and sql != ‘‘:

if data is not None:

cu = get_cursor(conn)

for d in data:

if SHOW_SQL:

print(‘执行sql:[{}],参数:[{}]‘.format(sql, d))

cu.execute(sql, d)

conn.commit()

close_all(conn, cu)

else:

print(‘the [{}] is empty or equal None!‘.format(sql))

def fetchall(conn, sql):

‘‘‘查询所有数据‘‘‘

if sql is not None and sql != ‘‘:

cu = get_cursor(conn)

if SHOW_SQL:

print(‘执行sql:[{}]‘.format(sql))

cu.execute(sql)

r = cu.fetchall()

if len(r) > 0:

for e in range(len(r)):

print(r[e])

else:

print(‘the [{}] is empty or equal None!‘.format(sql))

def fetchone(conn, sql, data):

‘‘‘查询一条数据‘‘‘

if sql is not None and sql != ‘‘:

if data is not None:

#Do this instead

d = (data,)

cu = get_cursor(conn)

if SHOW_SQL:

print(‘执行sql:[{}],参数:[{}]‘.format(sql, data))

cu.execute(sql, d)

r = cu.fetchall()

if len(r) > 0:

for e in range(len(r)):

print(r[e])

else:

print(‘the [{}] equal None!‘.format(data))

else:

print(‘the [{}] is empty or equal None!‘.format(sql))

def update(conn, sql, data):

‘‘‘更新数据‘‘‘

if sql is not None and sql != ‘‘:

if data is not None:

cu = get_cursor(conn)

for d in data:

if SHOW_SQL:

print(‘执行sql:[{}],参数:[{}]‘.format(sql, d))

cu.execute(sql, d)

conn.commit()

close_all(conn, cu)

else:

print(‘the [{}] is empty or equal None!‘.format(sql))

def delete(conn, sql, data):

‘‘‘删除数据‘‘‘

if sql is not None and sql != ‘‘:

if data is not None:

cu = get_cursor(conn)

for d in data:

if SHOW_SQL:

print(‘执行sql:[{}],参数:[{}]‘.format(sql, d))

cu.execute(sql, d)

conn.commit()

close_all(conn, cu)

else:

print(‘the [{}] is empty or equal None!‘.format(sql))

###############################################################

####            数据库操作CRUD     END

###############################################################

###############################################################

####            测试操作     START

###############################################################

def drop_table_test():

‘‘‘删除数据库表测试‘‘‘

print(‘删除数据库表测试...‘)

conn = get_conn(DB_FILE_PATH)

drop_table(conn, TABLE_NAME)

def create_table_test():

‘‘‘创建数据库表测试‘‘‘

print(‘创建数据库表测试...‘)

create_table_sql = ‘‘‘CREATE TABLE `student` (

`id` int(11) NOT NULL,

`name` varchar(20) NOT NULL,

`gender` varchar(4) DEFAULT NULL,

`age` int(11) DEFAULT NULL,

`address` varchar(200) DEFAULT NULL,

`phone` varchar(20) DEFAULT NULL,

PRIMARY KEY (`id`)

)‘‘‘

conn = get_conn(DB_FILE_PATH)

create_table(conn, create_table_sql)

def save_test():

‘‘‘保存数据测试...‘‘‘

print(‘保存数据测试...‘)

save_sql = ‘‘‘INSERT INTO student values (?, ?, ?, ?, ?, ?)‘‘‘

data = [(1, ‘Hongten‘, ‘男‘, 20, ‘广东省广州市‘, ‘13423****62‘),

(2, ‘Tom‘, ‘男‘, 22, ‘美国旧金山‘, ‘15423****63‘),

(3, ‘Jake‘, ‘女‘, 18, ‘广东省广州市‘, ‘18823****87‘),

(4, ‘Cate‘, ‘女‘, 21, ‘广东省广州市‘, ‘14323****32‘)]

conn = get_conn(DB_FILE_PATH)

save(conn, save_sql, data)

def fetchall_test():

‘‘‘查询所有数据...‘‘‘

print(‘查询所有数据...‘)

fetchall_sql = ‘‘‘SELECT * FROM student‘‘‘

conn = get_conn(DB_FILE_PATH)

fetchall(conn, fetchall_sql)

def fetchone_test():

‘‘‘查询一条数据...‘‘‘

print(‘查询一条数据...‘)

fetchone_sql = ‘SELECT * FROM student WHERE ID = ? ‘

data = 1

conn = get_conn(DB_FILE_PATH)

fetchone(conn, fetchone_sql, data)

def update_test():

‘‘‘更新数据...‘‘‘

print(‘更新数据...‘)

update_sql = ‘UPDATE student SET name = ? WHERE ID = ? ‘

data = [(‘HongtenAA‘, 1),

(‘HongtenBB‘, 2),

(‘HongtenCC‘, 3),

(‘HongtenDD‘, 4)]

conn = get_conn(DB_FILE_PATH)

update(conn, update_sql, data)

def delete_test():

‘‘‘删除数据...‘‘‘

print(‘删除数据...‘)

delete_sql = ‘DELETE FROM student WHERE NAME = ? AND ID = ? ‘

data = [(‘HongtenAA‘, 1),

(‘HongtenCC‘, 3)]

conn = get_conn(DB_FILE_PATH)

delete(conn, delete_sql, data)

###############################################################

####            测试操作     END

###############################################################

def init():

‘‘‘初始化方法‘‘‘

#数据库文件绝句路径

global DB_FILE_PATH

DB_FILE_PATH = ‘c:\\test\\hongten.db‘

#数据库表名称

global TABLE_NAME

TABLE_NAME = ‘student‘

#是否打印sql

global SHOW_SQL

SHOW_SQL = True

print(‘show_sql : {}‘.format(SHOW_SQL))

#如果存在数据库表,则删除表

drop_table_test()

#创建数据库表student

create_table_test()

#向数据库表中插入数据

save_test()

def main():

init()

fetchall_test()

print(‘#‘ * 50)

fetchone_test()

print(‘#‘ * 50)

update_test()

fetchall_test()

print(‘#‘ * 50)

delete_test()

fetchall_test()

if __name__ == ‘__main__‘:

main()

原文:http://my.oschina.net/sanpeterguo/blog/293880

python开发sqlite3完整_python开发_sqlite3_绝对完整相关推荐

  1. python编辑器是什么_python开发用什么编辑器

    如果你想做得好,你必须首先提高工具.据估计,大部分pythoners开始python从python IDE.有许多python IDE工具,但这是一个艰巨的任务选择一个IDE使用.您可以使用最基本的文 ...

  2. python 通用数据库类型_Python开发基础之Python常用的数据类型

    博文大纲 一.Python介绍 二.Python的变量 三.Python常用的数据类型 1.数字 2.字符串 3.元组 4.列表 5.字典 一.Python介绍 Python是一种动态解释型的编程语言 ...

  3. python开发的著名网站_python开发著名网站_python开发的著名软件 - CSDN

    根据权威机构统计,每日Python人才需求高达5000 +,但目前很少有程序员知道Python在市场中,竞争小,很容易得到快速和高薪就业.也许你不太了解十大Python常用的开发工具,现在我将告诉你. ...

  4. python创建sqlite3数据库_Python之Sqlite3数据库基本操作

    在一些小的应用中,难免会用到数据库,Sqlite数据库以其小巧轻便,无需安装,移植性好著称,本文主要以一个简单的小例子,简述Python在Sqlite数据库方面的应用,仅供学习分享使用,如有不足之处, ...

  5. python开发的前景_python开发前景怎么样

    随着近几年Python的飞速发展,应用范围逐步趋于广泛,后端开发.前端开发.爬虫.金融量化分析.人工智能.自动化运维.自动化运维.大数据,Python都有涉及.Python相对其他编程语言来讲,语法较 ...

  6. python定界符有哪些_Python 开发中有哪些高级技巧?

    和大多数现代编程语言一样,在 Python 中函数是抽象和封装的主要方法.作为开发人员,你平时可能写过几百个函数,但不是所有函数的作用都一样.如果写了个"坏"函数,会直接影响代码的 ...

  7. python开发游戏教程_Python开发星际游戏实例教程

    这篇文章主要为大家详细介绍了Python外星人入侵游戏编程完整的实现思路,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 PYTHON游戏编程外星人入侵的完整实现思路,具体内容如下 准备工作:下载p ...

  8. python开发游戏流程_python开发游戏的前期准备

    python开发游戏的前期准备 本文章面向有一定基础的python学习者,使用Pygame包开发一款简单的游戏 首先打开命令行,使用PyPI下载Pygame包(输入命令pip install pyga ...

  9. python编译环境搭建_python开发环境搭建

    python的开发环境是比较简单的,本来也没打算要写,不过现在想想还是写出来,一方面保证来我博客上python内容的完整性,一方面也可能有些人真的不会,毕竟我是用了很多其他语言之后才转到python的 ...

最新文章

  1. 大话数据结构 06:栈 顺序存储结构
  2. Win下更新pip出现OSError:[WinError17]与PerrmissionError:[WinError5]及解决
  3. linux shell转换时间格式,在bash中转换日期格式
  4. 解决Execution failed for task ':app:clean'. Unable to delete directory问题
  5. 利用InfoPath生成XML资源文件
  6. 【二分法】计蒜客:二分答案
  7. HTML知识积累及实践(三) - 列表标签
  8. CSDN在2017年度的若干“升级”
  9. php错误日志和php-frm错误日志,错误amp;日志
  10. 利用BitmapCutter实现截取图片功能之修改加强版,兼容Jquery1.4.x以上版本
  11. 特定条件下的技术团队绩效考核
  12. 【谷歌浏览器】国内如何配置谷歌浏览器使用
  13. 中山大学非全日制计算机考研,中山大学社会工作非全日制考研经验贴
  14. Lion Disk Maker让你一键制作Lion系统安装U盘
  15. sklearn.neighbors
  16. python编程基础-task5-面向对象的编程
  17. 计算机桌面录屏,电脑桌面录屏软件有哪些可以推荐?
  18. 对数组进行“整体赋值”
  19. vue3全局变量定义使用
  20. centos7虚拟机忘记密码

热门文章

  1. 基于JAVA+SSH+MYSQL的水果商城系统
  2. 解决gradle项目每次编译都下载gradle-x.x-all.zip gradle-x.x-bin.zip
  3. 【Rollo的Python之路】Python 多进程 学习笔记 multiprocessing
  4. VSCode代码格式化自动换行问题
  5. js正则表达式匹配字符串与优化过程
  6. JS-以鼠标位置为中心的滑轮放大功能demo1
  7. 采用keepalived施工可用性MySQL-HA
  8. wap开发使用jquery mobile之后页面不加载外部css样式文件/js文件
  9. 相等运算符重载中的问题
  10. 120 - 算法 -找到n个无序数中的 第k个最小的数 快排的变体