Python使用Sqlite增删改查操作

#coding=utf-8
import sqlite3,os
#创建数据库在硬盘上
conn = sqlite3.connect(‘C:\\Users\\Public\\Desktop\\test.db’)

“””
#执行sql创建表
conn.execute(”’CREATE TABLE LOG
(ID integer PRIMARY KEY autoincrement,
TITLE?????????? TEXT??? NOT NULL,
LINK??????????? TEXT??? NOT NULL,
PLUS??????? CHAR(255)
);”’)

“””

“””
#插入数据
conn.execute(“INSERT INTO LOG (TITLE,LINK) \
VALUES (‘test’,’url’)”);

conn.close()
“””

“””
#查询操作
cursor = conn.execute(“SELECT id,title,link,plus from log”)
for row in cursor:
print “id:”+str(row[0])
print “title:”+str(row[1])
print “link:”+str(row[2])
print “plus:”+str(row[3])
“””

“””
#更新、删除操作
conn.execute(“UPDATE LOG set TITLE = ‘updata’ where ID=1”)
conn.execute(“DELETE from LOG where ID=2;”)
“””

Python基础学习笔记

#字符串操作和数据类型相关
字符串切片操作 a[开始位置值:结束位置值:步长值]
len()求序列长度
+ 连接两个序列
“#”*5 重复序列元素次#####
in 判断元素是否在序列中 not in
max()min() 返回序列中的最大值和最小值
cmp(str1,str2) 判断2个序列是否相等

元祖(元祖)元祖值不可变类似于字符串列表?????????? (x,y)
列表 [序列] 是可变类型数据,和元祖的区别是 可对元素重新赋值??? [1,2]
list.append(“str” #列表中最后一个元素后面添加元素
list.remove(“元素值”) #删除列表中的元素,如果出现多个则删除第一个
del(list[0]) #删除元素键值
var in list 查找元素
字典 {字典} #在列表基础上增加了元祖列表映射,即列表的集合。{[x:1],[y:2]}
dic={key:value,key1,vaule1} #字典的定义方法
dic[‘key’] #字典的取值

#流程控制相关
for value in list:
print “输出数组值”+x #通常用于遍历序列
else:
print “正常结束后,输出ELSE”
if中continue和break,前者为停止跳出当前循环后代码,继续循环;后者为跳出循环
pass 代码桩,占位符,不做任何操作,预留代码块处理。

while 条件表达式:
执行代码块
else:
print “如果条件不成立,则输出!”

#函数相关
def 函数名(参数列表=缺省值):
函数体
retuen obj
xx = lambda x,y:x+y 匿名函数,快速定义一行的小函数,调用方式 xx(1,2) 返回3

#常用内建函数
type() 查看变量类型函数
id() 查看变量内存存储位置
help()? 查看帮助文档
range(开始值,结束值,步长) 连续数-函数,默认整数类型步长为1,xrange大数据运算
time.sleep(秒数值) 睡眠函数
exit() 结束程序
raw_input(‘please? input’) 输入函数
callable() 查看函数是否可被调用
isinstance(object,list) 判断object对象是否为list类型
str.split(切割字符,切割次数) 根据切割字符切割字符串函数
str.replace(变量,要替换字符,替换后字符) 字符串替换函数
filter(自定义函数,序列) 过滤方法,序列传入自定义函数后返回的序列
zip() 一一对应打包元祖序列合并为字典
map() 和zip一样,区别是map在缺少值会自动填充,支持并行遍历

#模块和包
import 模块
模块.方法 #引用模块中的方法,模块名就是文件名(不包括.py)

#正则表达式相关
正则表达式:import re
findall(‘正则’,’变量’) 返回数组 search 返回字符
. 占位符————-匹配任意字符,换行符\n除外
* 出现的位置———匹配前一个字符0次或无限次
? 寻找一次字符——-匹配前一个字符0次或1次
(\d+) 匹配数字——-
.* 贪心算法? .*? 非贪心算法
实际应用aa(.*?)bb 返回中间的值

元字符
[a-z] 常用匹配一个字符集,[^ac] 不包含a,c取反;
^ 匹配行首;$ 补集,补字符位置;
\d 匹配所有十进制,相当于[0-9]
\D 匹配所有非十进制,相当于[^0-9]
\s 匹配任何空白字符,相当于[\t\n\r\f\v]
\S 匹配任何非空白字符,相当于[^\t\n\r\f\v]
\w 匹配任何字母数字字符,相当于[a-zA-Z0-9_]
\W 匹配任何非字母数字字符,相当于[^a-zA-Z0-9_]
#\反转义字符如果是关键字则转义,如果是大写DSW结果则取反
{8} 重复次数,(^010-?\d{8}$) 匹配北京的电话号码
+ 至少出现一次,(hello+),至少出现一次hello
? 字符重复一次或者0次,比如(^010-?\d{8}$)中的-可有可无
{m,n} 至少重复m次,最多重复n次

match() #开始位置查找是否匹配,一般用来测试匹配的数据是否成功
search() #所有内容中查找是否匹配
findall() #匹配所有字符串,返回一个列表
finditer() #匹配所有字符串,返回一个迭代器
sub() #替换字符串 replsce()不支持正则,sub支持正则,subn
split() #切割字符串,返回一个字典

re.compile(r’hello’,re.I) #加入re.I参数 结果则不区分大小写
re.S #包括换行符 匹配
re.M #多行匹配
re.findall(r”\d{1}\.\d{1}\.\d{1}.\d{1}”,ip,re.I)[0] #匹配ip,使用便捷

#其他知识
浅拷贝:python中a=b赋值相当于C++中的变量引用,内存中地址并没有变化,

id(),append()函数测试;
深拷贝:c=copy.copy(a) 深拷贝,改变变量地址非引用
read() write() close() 打开、写入、关闭文件操作
FileObject类操作方法
readline() 每次读取一行 readlines() 每行返回一个列表
next() 指针移动
writelines() seek() 按行写入、按偏移量写入
flush() 刷新,不关闭文件更新文件
walk() 返回路径下的path,dirlist,filelist用于遍历目录

try:
代码块
except IOError,msg:
pass #代码块的异常处理
finally:
pass #不管是否异常都执行的语句

自定义抛出异常 raise TypeError(‘nothing!’)

ipmort MySQLdb
conn = MySQLdb.connect(user=’root’,passwd=”,host=’localhost’)
cur = conn.cursor? #创建游标
conn.select_db(‘数据库’)#创建链接
cur.execute(‘要执行的sql语句’) #增删改查操作
cur.fetchone()#游标指针
cur.scroll(0,16)#游标移动
cur.close()#关闭游标
conn.close()#关闭链接

#创建类
class myclass():
def fun(self):
print “the is class!”
#使用类
test = myclass()
test.fun()

#其他常用
time.strftime(‘%Y-%m-%d %H:%M:%S’,time.localtime(time.time())) #时间戳转换函数
sorted(set(qqlist),key=qqlist.index) #利用集合不可重复特性为列表去除重复值返回新列表
while True: #力图用死循环+睡眠做定时器
print time.strftime(‘%Y-%m-%d %H:%M:%S’,time.localtime(time.time()))
time.sleep(1)
re_href = re.compile(‘<\s*a[^>]*>[^<](.*?)*<\s*/\s*a\s*>’)
info = re_href.sub(domain,content,re.S)#去出超链接,替换
import HTMLParser
html_parser = HTMLParser.HTMLParser()
js = html_parser.unescape(html) #txt = ” #转为html代码
import cgi
html = cgi.escape(js) #html = ‘<javascript&gt’ #转为html实体
str.replace(‘\t’,”).replace(‘\n’,”).replace(‘ ‘,”) #去除空格,换行符,制表符
referer = re.findall(r”^http://.*?/{1}”,url,re.I)[0] #根据网址取域名
filename = url.split(‘/’)[-1] #根据网址取文件%

python编码之伤

#! -*- coding:utf-8 -*-
a=’你好’
print u”你好”

如果a是变量可以这么做
b=a.decode(“utf-8”).encode(“gbk”)

读文件会报错,这么去读:
codecs.open(“test.txt”, encoding=’gbk’).read()