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

#流程

#创建数据库

 #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. Combobox实现多项选择 Silverlight下“Combobox”怎样实现多项选择?

    把 combobox里面的项换成checkedbox 示例: combobox cbb=new combobox(); ) { CheckBox cb = new CheckBox(); cb.Com ...

  2. 如何处理好前后端分离的 API 问题(转载自知乎)

    9 个月前 API 都搞不好,还怎么当程序员?如果 API 设计只是后台的活,为什么还需要前端工程师. 作为一个程序员,我讨厌那些没有文档的库.我们就好像在操纵一个黑盒一样,预期不了它的正常行为是什么 ...

  3. 泛型约束where条件的使用(通过类型参数动态反射创建实例)

    定义抽象的人类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  4. 函数数组demo

    #include <stdio.h> #include <string.h> typedef int(*service_func)(char *,char *); struct ...

  5. 20145226夏艺华 《Java程序设计》第8周学习总结

    教材学习内容总结 学习目标 了解NIO 会使用Channel.Buffer与NIO2 会使用日志API.国际化 会使用正则表达式 了解JDK8增强功能 第14章 NIO与NIO2 14.1 认识NIO ...

  6. 2018.07.03 POJ 3348 Cows(凸包)

    Cows Time Limit: 2000MS Memory Limit: 65536K Description Your friend to the south is interested in b ...

  7. 【C#】VS2015开发环境的安装和配置(转)

    出处: http://www.cnblogs.com/rainmj/p/5636518.html http://www.cnblogs.com/rainmj/p/5636529.html http:/ ...

  8. 29. What Makes a True Leader ? 合格的领导者由何物决定 ?

    29. What Makes a True Leader ? 合格的领导者由何物决定 ? ① Reading leadership literature,you'd sometimes think t ...

  9. 第三章 形容词(Les adjectifs)

    ★形容词的性(Le genre de l'adjectif ) ()一般规则是在阳性形容词后加-e:         français ➞francaise法国的         content ➞c ...

  10. javascript 字符数组转换成以逗号隔开的字符串

    var ids = [];angular.forEach(pulsarServers,function (server) { ids.push(server.id);});ids = ids.join ...