#实例:用数据库存储日记,实现日记本功能

#流程

#创建数据库

 #coding:utf-8
import sqlite3
connect=sqlite3.connect('test.db')
connect.close()

#效果

  

#用sqlite3模块对数据库进行操作

 #coding:utf-8
import sqlite3
#创建数据库
connect=sqlite3.connect('test.db')
cursor = connect.cursor()
#为了多次执行该段程序所以在开头删除表diary1
cursor.execute("drop table diary1") #创建表
cursor.execute("create table diary1 (id integer primary key autoincrement,title text,content text)")
#插入数据,id自增所以可以写null
cursor.execute("insert into diary1 values (null,'title1','content1')")
#插入数据
cursor.execute("insert into diary1(title,content) values ('title2','content2')") #查询表中所有数据
for row in cursor.execute("select * from diary1"):
print row
print '*******增*******' #删除id为1的数据
cursor.execute("delete from diary1 where id=1")
for row in cursor.execute("select * from diary1"):
print row
print '******删除*******' #修改数据
cursor.execute("update diary1 set title='title0',content='content0' where id =2")
for row in cursor.execute("select * from diary1"):
print row
print '*****改******' #一次性插入多条数据
items=[('title0','content0'),('title1','content1'),('title2','content2')]
cursor.executemany("insert into diary1 (title,content) values(?,?)",items)
for row in cursor.execute("select * from diary1"):
print row
print "******插入多条数据******" #查询数据
print '查询数据'
cursor.execute("select * from diary1 where id=4")
print cursor.fetchall() cursor.execute("select * from diary1 where content='content0'")
print cursor.fetchall() #关闭游标和数据库
cursor.close()
connect.close()

#效果

#注意到在python的sqlite3模块中,数据库中的每个记录都是以一个tuple的形式存储

#表中数据除了主键外其他字段的值都可以重复

#获取当前数据库中的所有表

 #coding:utf-8
import sqlite3
connect = sqlite3.connect("test.db")
cursor = connect.cursor() #插入记录,参数为表名(str),数据(元组)
def insertData(table,tup):
global cursor
global connect
sql="insert into "+table+"(title,content) values (?,?)"
cursor.execute(sql,tup)
#对数据库操作事务的提交
connect.commit() #删除特定id的记录
def deleteData(name,id):
global cursor
global connect
sql="delete from "+name+" where id="+str(id)
cursor.execute(sql)
connect.commit() #根据id修改数据,参数为表名,id(整型),数据(元组)
def updateData(name,id,tup):
global cursor
global connect
sql="UPDATE "+name+" SET title='"+tup[0]+"',content='"+tup[1]+"' WHERE id="+str(id)
cursor.execute(sql)
connect.commit() #根据id查找数据,参数为表名(str),id
def searchData(name,id):
#为什么这里又不需要global connect
global cursor
sql="select * from "+name+" where id="+str(id)
cursor.execute(sql)
#cursor.fetchall()和cursor.fetchone()区别?
print u"要查找的数据为:",cursor.fetchone() insertData('mydiary',('title0','content0'))
updateData("mydiary",2,('title3','content3'))
#deleteData('mydiary',1)
insertData('mydiary',('title9','content9'))
searchData("mydiary",6)

程序媛计划——python数据库的更多相关文章

  1. 程序媛计划——python socket通信

    定义 socket 是进程间的一种通信方式,可以实现不同主机间的数据传输 #写服务期端程序server.py #实现服务器向客户端连接 #!/usr/bin/env python #coding:ut ...

  2. 程序媛计划——python中级课时1

    class1 异常处理 #python会把标准输入的内容当作字符串处理,即使输入的是数字3也会转化为字符串’3’. n1 = raw_input() n2 = raw_input() print n1 ...

  3. 程序媛计划——python正则表达式

    #定义 正则表达式是对字符串操作的一种逻辑公式,通过它我们能筛选过滤出我们需要的内容,如判断一串数字是否是电话号码. #原理 先把正则表达式的字符串转换成 Pattern 对象,接着用这个对象处理文本 ...

  4. 程序媛计划——python初级课时3~5

    产生1-10中的随机数: for 循环:所有可遍历对象都能用于for循环,如一个字符串. len(list),list中的元素类型可以各不相同:可以直接用下标对list元素赋值来更新列表 对字符串可以 ...

  5. 程序媛计划——python初级课时1~2

    在命令行中运行py文件:python 文件路径/文件名 python变量必须赋值后才能使用,因为py变量只有赋值后才会被创建. py可以同时给多个变量赋值:a,b,c = 10,20,'dfjkdj' ...

  6. 程序媛计划——python爬虫

    #用selenium打开百度首页 #第一次运行代码时应该在safari开发者选项中设置'allow remote automation' from selenium import webdriver ...

  7. 程序媛计划——python初级class5~13

    列表和元组都是可迭代对象(可以用于for in) 列表 [] #添加列表元素: list.append(argu) #修改列表: list[2] = 2017 #删除列表元素 Del list[2] ...

  8. 程序媛计划——SQLite初级

    数据库简介 数据库定义: 指的是以一定方式储存在一起.能为多个用户共享.具有尽可能小的冗余度.与应用程序彼此独立的数据集合.是带有相关数据的表的集合. 数据库是由行和列组成的二维表. 字段: 数据库表 ...

  9. 程序媛计划——mysql外键

    定义 外键:如果一个表的某个字段指向另一个表的主键,就称之为外键.被指向的表,称之为主表,也叫父表,那么另一个表就是从表,也叫子表 #先新建两个表 mysql> create table aut ...

随机推荐

  1. php socket 编程(一)

    socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信.在Internet上的主机一般运行了多个服务软件,同时提 ...

  2. 基于udp的套接字

    1 ss = socket() #创建一个服务器的套接字 2 ss.bind() #绑定服务器套接字 3 inf_loop: #服务器无限循环 4 cs = ss.recvfrom()/ss.send ...

  3. layui学习<一>

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  4. oracle使用 merge 更新或插入数据

    OracleCC++C#  总结下.使用merge比传统的先判断再选择插入或更新快很多. 1)主要功能 提供有条件地更新和插入数据到数据库表中 如果该行存在,执行一个UPDATE操作,如果是一个新行, ...

  5. POJ 2585.Window Pains 拓扑排序

    Window Pains Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1888   Accepted: 944 Descr ...

  6. Web开发者工具下载

    登录微信公众号:https://mp.weixin.qq.com

  7. STAX项目结束总结

    STAX:Support Taxonomy Management Console. 使用了MVC+WCF+jQuery+Azman.msc(权限控制)+kendoUI+SQL SERVER 2012

  8. "我们分手吧。"女的对男的说。 "为什么呢?亲爱的,你不要我了么?" "因为你幼稚。"女的坚定地语气回答道,然后转身准备走。 男的上前踩住女的影子,然后说...

    1."我们分手吧."女的对男的说. "为什么呢?亲爱的,你不要我了么?" "因为你幼稚."女的坚定地语气回答道,然后转身准备走. 男的上前踩 ...

  9. 2018.07.24 bzoj3531: [Sdoi2014]旅行(树链剖分+动态开点)

    传送门 树链剖分. 如何维护? 如果颜色少直接每种颜色一颗线段树走人. 但这题颜色数量不大于1e5" role="presentation" style="po ...

  10. Series转成list

    直接list(series)就可以的 最佳的方式是将列表转换成Python中的科学计算包numpy包的array类型,再进行加减. 1 2 3 4 import numpy as np a = np. ...