一,数据库与sql语言
数据库其实就是用来存储大量数据并便于检索的一种手段,便于快速的检索大量数据
后面是最常用的sql命令
这个greate table就是在数据库里面创建了一张表,如果这张表不存在的话,就创建这张表,如果存在的话就忽略这段话。
二,创建数据库:
import sqlite3 db = sqlite3.connect("c:/tmp/test.db") #连接数据库,若不存在则自动创建 cur = db.cursor() #获取光标,操作数据库全部都要考光标实现 sql = "GREATE TABLE if not exists student (id integer primary key, name,text,gpa real,birthday date,age integer,picture blob)" #如果students不存在的话 就创建一个表 cur.execute(sql) cur.execute("insert into students value(1600,'张三',3.81,’2000-09-12‘,18,null)") mylist = [(1700,'李四',"3.25",'2001-12-01',17,None) (1780,'李五',"3.85",'2001-11-01',17,None)] for s in mylist:#依次插入mylist中的每个记录 cur.execute("insert into students value(?,?,?,?,?,?)",(s[0],s[1],s[2],s[3],s[4],s[5])) db.commit() #真正写入,写入操作都需要这个 cur.close()#关闭光标 db.close()#关闭数据库
步骤:首先先连接数据库,获取光标,写一个命令的字符串(sql)后面所有这些字符串的实现都是要依靠光标和execute函数。还有就是可以通过遍历的方式,把列表中元组的数据读入数据库中。
三,数据库的查询和修改:
where其实就是像条件,最后一句就是有用and来连接,要按照年龄来排序的话,就要有OLDER BY age
db = sqlite3.connect("c/tmp/text2.db") cur = db.cursor()#打开光标 sql = 'select *from students'#检索所有学生的内容 cur.execute(sql) x = cur.fetchone()#取出满足内容的第一个记录 print(x) print(x[1]) for x in cur.fetchall:#这个函数就是取出全部的记录 print(x[:-1]) cur.execute("SELECT *FROM students WHERE name ='Jack'") x = cur.fetchone() if x == None: print("can not find Jack") cur.close() db.close()
注意这个条件也是用and连接年龄按照降序排列。而且有一个细节就是如果这个执行语句不在execute函数里面的话,就是用小写,如果在里面就是用大写。
execute函数是可以在前面的sql语句中留有?的,这些问好由后面的元组参数来填补(当元组里面只有一个参数的时候一定要加上一个逗号)。
五,处理二进制文件:
安装了一个request库可以获取地址
import requests f = open('c:/tmp/tmp.jpg','rb')#打开文件所在地址 img = f.read()#用read把文件读出来 db = sqilte3.connect('c:/tmp/test2.dp') cur = db.cursor() sql = "UPDATA students SET picture=? WHERE name = '李四’" cur.execute(sql,(img,))#把文件用updata set 搞到数据库里面
也能够使用request库从网络上获取文件,即通过网址获取(后面学爬虫的时候在继续看)
imgStream这个函数先记住就好了。
后面是读取二进制形式的照片