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

#流程

#创建数据库

 #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. PL/Sql快速执行 insert语句的.sql文件

    当全是 insert语句的.sql文件太大时(insert 语句条数太大),直接打开执行sql文件,pl/sql会卡死. 这是可以用pl/sql的命令窗口来执行.sql文件,操作步骤如下: 1.新建命 ...

  2. 改变父元素的透明度,不影响子元素的透明度—css

    1.如果我们给父元素添加opacity:0.4后,子元素的red颜色也变成了0.4的透明度, 例子如下: <!DOCTYPE html> <html> <head> ...

  3. php调用C#写的dll包

    1.转到需要注册的dll路径下 2.输入regasm命令+文件名 3问题解决

  4. Linux编程规范

    1)在使用C语言进行编程时,源文件都必须加---文件头 /******************************************************** *文件名:test.c *创 ...

  5. kendo ui treeview 标题太长时的自动换行

    添加以下CSS即可: div.k-treeview{white-space: normal;}

  6. 2018.10.22 bzoj1009: [HNOI2008]GT考试(kmp+矩阵快速幂优化dp)

    传送门 f[i][j]f[i][j]f[i][j]表示从状态"匹配了前i位"转移到"匹配了前j位"的方案数. 这个东西单次是可以通过跳kmp的fail数组得到的 ...

  7. spring boot2.0冷知识

    首先,Spring Boot 2.0.0 要求 Java 8 或更高版本,不再支持 Java 6 和 7. 在 Spring Boot 2.0 中,许多配置属性已被重命名或被删除,相应地,开发者需要升 ...

  8. Duplicate entry '1' for key 'PRIMARY'

    这个bug产生在你建立主键的时候,就是说主键的id重复了,有两个同名的id,需要删除一个,才能满足主键的唯一性

  9. trcd_extract_EDCD_new

    # -*- coding:utf-8 -*- import re ''' 适应新版本 ''' year='17A'#用户自定义 ss='./data/'#根目录 filename = ss+'EDCD ...

  10. 如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据

    本文分步介绍了多种从 Microsoft Visual C# 2005 或 Microsoft Visual C# .NET 程序向 Microsoft Excel 2002 传输数据的方法.本文还提 ...