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.py
Python的字符串类型是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
continue
dict 是一组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()