pymysql笔记
1. connection对象
host – MySQL的地址(主机名) user – MySQL登录用户名 password – MySQL登录密码,别名:passwd database – 要连接的数据库名称,别名:db port – MySQL的端口,默认是3306 charset – MySQL数据库的字符集,一般是utf8或者是utf8mb4//这个是可以存储emoji表情的 cursorclass – cursor的类,主要用户返回结果的展示方式,一般使用字典的方式autocommit_mode = None 是否自动提交,就是执行了sql语句之后是否
立即提交到数据库 close() 关闭连接 begin() 开启事务 rollback() 回滚事务,比如事务过程中失败了,那么就可以通过回滚撤销之前的操作,必须要在commit之前 commit() 提交更改到数据库,默认情况下,执行之后是不会马上提交到数据库的,需要调用commit提交 cursor(cursor=None) 创建一个游标,用来执行MySQL语句的 open 测试连接是否打开,如果打开,那么就返回True ping(reconnect=True) 测试服务器连接2.游标对象cursor
close() 关闭游标 execute(query, args=None) 执行sql语句,如果有参数的,那么就填入参数 参数: query (str) – 要执行的sql语句 args (tuple, list or dict) – sql语句中要用到的参数就可以填写在这里 fetchall() 获取所有的结果,一般是用于查询语句的 fetchmany(size=None)就是获取指定条数的结果 fetchone() 每次获取一条数据 3. pymysql.cursors.DictCursor 将返回的结果转为字典(dict)--------------------------------------------------------------------------------------------------------------------------------
标准Python风格是每个缩进级别是使用4个空格,永远不要使用Tab制表符!
出错一
def sayHello(): print('Hello World!')sayHello()
正确:(上面定义,下面执行,缩进了就不执行了)
def sayHello(): print('Hello World!')sayHello()
Linux直接指向py文件1.添加特殊注释:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- print('hello, world')2.通过命令给hello.py以执行权限:
$ chmod a+x hello.pyPython的字符串类型是str,在内存中以Unicode表示,如果要在网络上传输,或者保存到磁盘上,就需要把str变为bytes。
Python对bytes类型的数据用带b前缀的单引号或双引号表示: x = b'ABC'以Unicode表示的str通过encode()方法可以编码为指定的bytes,【纯英文ASCII编码是不能带中文的】
反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:
ASCII编码:英文字母、数字符号,统一 于是各国做了GB2312编码,日本做 了Shift_JIS编码,韩国把韩文编到Euc-kr Unicode:Unicode把所有语言都统一到一套编码里 UTF-8编码:Unicode浪费储存空间,Unicode编码转化为“可变长编码”的UTF-8编码 格式化字符串替换: %s表示用字符串替换,%d表示用整数替换,有几个%?占位符 format()方法 也用来格式化 list list里面元素数据类型可以不同:L = ['Apple', 123, True,['asp', 'php']](还可以包含另外一个list,二维,三维。。。) classmates = ['Michael', 'Bob', 'Tracy'] classmates[0]='Michael'; classmates[-1]='Tracy';【最后一个元素可以用-1来表示】,以此类推list中插入元素:
classmates.insert(1, 'Jack') 得到['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']要删除指定位置的元素,用pop(i)方法
classmates.pop(1) 得到['Michael', 'Bob', 'Tracy']要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:
classmates[1] = 'Sarah' 得到['Michael', 'Sarah', 'Tracy']tuple元组
元组不能改
classmates = ('Michael', 'Bob', 'Tracy') 只有1个元素的tuple定义时必须加一个逗号,,来消除歧义: t = (1,)(否则就计算了)元组包含了list,list还是能改:
>>> t = ('a', 'b', ['A', 'B']) >>> t[2][0] = 'X' >>> t[2][1] = 'Y' >>> t ('a', 'b', ['X', 'Y'])判断:(注意判断不要少写了个冒号!!!)
if age >= 18:if判断条件还可以简写,比如写:(因为if是 为true就执行,后面部分全部忽略!)
if x: print('True') 只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False。 循环: 一种是for...in循环 names = ['Michael', 'Bob', 'Tracy'] for name in names: print(name)range()函数,从1写到100
range(5)=[0,1,2,3,4,] while循环 break continuedict 是一组key的集合 高速查找,以空间换取时间
d['Jack'] = 90'Thomas' in d 返回False
set 一组key的集合 s = set([1, 2, 3]) 添加,删除key: s.add(4) s.remove(4)s1 & s2 交集
s1 | s2 并集函数:
help(abs) 查看函数方法int()函数
str(1.23) bool(1)def my_abs(x): (记得带冒号!!)
跳过2章,递归函数 高级函数L[0:3] 取前3个函数
L[1:3] L[:3] L[-2:]正则:
re.search re.findall去重很简单,就要 keyword=set() 就不会重复了
整型,不能用jion,可以用字符串拼接代替: line = "%s\t%s\n" %(item[0],item[1])exit()