程序媛计划——python数据库
#实例:用数据库存储日记,实现日记本功能
#流程

#创建数据库
#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数据库的更多相关文章
- 程序媛计划——python socket通信
定义 socket 是进程间的一种通信方式,可以实现不同主机间的数据传输 #写服务期端程序server.py #实现服务器向客户端连接 #!/usr/bin/env python #coding:ut ...
- 程序媛计划——python中级课时1
class1 异常处理 #python会把标准输入的内容当作字符串处理,即使输入的是数字3也会转化为字符串’3’. n1 = raw_input() n2 = raw_input() print n1 ...
- 程序媛计划——python正则表达式
#定义 正则表达式是对字符串操作的一种逻辑公式,通过它我们能筛选过滤出我们需要的内容,如判断一串数字是否是电话号码. #原理 先把正则表达式的字符串转换成 Pattern 对象,接着用这个对象处理文本 ...
- 程序媛计划——python初级课时3~5
产生1-10中的随机数: for 循环:所有可遍历对象都能用于for循环,如一个字符串. len(list),list中的元素类型可以各不相同:可以直接用下标对list元素赋值来更新列表 对字符串可以 ...
- 程序媛计划——python初级课时1~2
在命令行中运行py文件:python 文件路径/文件名 python变量必须赋值后才能使用,因为py变量只有赋值后才会被创建. py可以同时给多个变量赋值:a,b,c = 10,20,'dfjkdj' ...
- 程序媛计划——python爬虫
#用selenium打开百度首页 #第一次运行代码时应该在safari开发者选项中设置'allow remote automation' from selenium import webdriver ...
- 程序媛计划——python初级class5~13
列表和元组都是可迭代对象(可以用于for in) 列表 [] #添加列表元素: list.append(argu) #修改列表: list[2] = 2017 #删除列表元素 Del list[2] ...
- 程序媛计划——SQLite初级
数据库简介 数据库定义: 指的是以一定方式储存在一起.能为多个用户共享.具有尽可能小的冗余度.与应用程序彼此独立的数据集合.是带有相关数据的表的集合. 数据库是由行和列组成的二维表. 字段: 数据库表 ...
- 程序媛计划——mysql外键
定义 外键:如果一个表的某个字段指向另一个表的主键,就称之为外键.被指向的表,称之为主表,也叫父表,那么另一个表就是从表,也叫子表 #先新建两个表 mysql> create table aut ...
随机推荐
- JSP标准标签库JSTL
1.什么是JSTL? JSP标准标签库(JSP Standard Tag Library) 2.JSTL标准标签库中的常用标签 JSTL是JSP页面的标签库,实质上是一段Java代码.我们常用的是它的 ...
- 将html转换成image图片png格式
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics ...
- 解决lhgDialog插件在IE11浏览器的BUG
项目中用到一款lhgDialog插件,最近在Win7系统IE11浏览器打上最新补丁(KB4012204)后,对话框内容的高度变成默认高度,经过调试,修改了lhgDialog里的iframe高度,问题解 ...
- [Selenium]如何实现上传本地文件
public void uploadLocalFileToServer(String uploadFileName){ String AutomationPath = System.getProper ...
- 2018.09.07 Amount of degrees(数位dp)
描述 求给定区间[X,Y]中满足下列条件的整数个数:这个数恰好等于K个互不相等的B的整数次幂之和. 例如,设X=15,Y=20,K=2,B=2,则有且仅有下列三个数满足题意: 17 = 24+20, ...
- 2018.08.04 bzoj3261: 最大异或和(trie)
传送门 简单可持久化01trie树. 实际上这东西跟可持久化线段树貌似是一个东西啊. 要维护题目给出的信息,就需要维护前缀异或和并且把它们插入一棵01trie树,然后利用贪心的思想在上面递归就行了,因 ...
- redis与ssm整合(用 redis 替代mybatis二级缓存)
SSM+redis整合 这里主要是利用redis去做mybatis的二级缓存,mybaits映射文件中所有的select都会刷新已有缓存,如果不存在就会新建缓存,所有的insert,update操作都 ...
- IntelliJ IDEA 2017版 SpringBoot的核心配置详解
Spring Boot的核心 (1)Spring Boot的项目一般都会有*Application的入口类,入口类中会有main方法,这是一个标准的Java应用程序的入口方法. (2)@Spri ...
- python 求最大子序列
动态规划的本质,是对问题状态的定义和状态转移方程的定义.dynamic programming is a method for solving a complex problem by breaki ...
- webservice大文件怎么传输
版权所有 2009-2018荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...