1、Python自有模块正则
1 import re 2 3 # re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None 4 print(re.match("aaa","aaaabbb").group()) #在起始位置匹配 5 print(re.match("aaa","abbbaaa")) #不在起始位置匹配,返回None 6 7 # re.search扫描整个字符串并返回第一个成功的匹配 8 print(re.search("haha","geinizhanggognzi").group()) 9 10 # re.findall从左到右扫描字符串,按顺序返回匹配,如果无匹配结果则返回空列表 11 print(re.findall("\d","queshihenlihai")) 12 print(re.findall("\d","zhengchangfasheng")) 13 14 # sub用于替换字符串中的匹配项 15 print(re.sub("g..t","good","goot geet up")) 16 # split返回切割后的列表 17 print(re.split("\+","123+456*789+abcd"))
1 # ['AD123453', 'AC342123', 'AR343212'] 2 # [A-Z]{2}\d{6} 3 4 # ^(13|14|15|17|18)\d{9} 5 # ^1[34578]\d{9}
2、Python第三方模块操作MySQL
连接数据库:
1 import mysql.connector 2 config = { 3 "host":"127.0.0.1", 4 "user":"root", 5 "passwd":"vertrigo", 6 "port":3306, 7 "db":"test", 8 "charset":"utf8" 9 } 10 11 try: 12 db = mysql.connector.connect(**config) 13 except mysql.connector.Error as e: 14 print("连接数据库失败!",str(e))
插入数据:
1 2 cursor = db.cursor(buffered=True) #buffered=True会把结果集保存到本地并一次性返回,这样可以提高性能 2 try: 3 #第一种:直接字符串插入方式 4 # sql_insert1="insert into student (name, age) values ('xiao', 27)" 5 # cursor.execute(sql_insert1) 6 7 #第二种:元组连接插入方式 8 sql_insert2="insert into student (name, age) values (%s, %s)" 9 #此处的%s为占位符,而不是格式化字符串,所以age用%s 10 # data=('xiaoqiang',18) 11 # cursor.execute(sql_insert2,data) 12 data = [("xiao",20), 13 ("xian",25), 14 ("rourou",27), 15 ("juju",28)] 16 cursor.executemany(sql_insert2,data) 17 18 #如果表引擎为Innodb,执行完成后需执行commit进行事务提交 19 db.commit() 20 #cursor.execute('commit') 21 except mysql.connector.Error as e: 22 print('插入失败!', str(e)) 23 finally: 24 cursor.close() 25 db.close()
删除数据:
1 cursor = db.cursor(buffered=True) 2 try: 3 sql_del = "delete from student where name=%s and age=%s" 4 data_del = [ 5 ("jin",28), 6 ("songhao",27)] 7 cursor.executemany(sql_del,data_del) 8 db.commit() 9 except mysql.connector.Error as e: 10 print("删除数据失败!",str(e)) 11 finally: 12 cursor.close() 13 db.close()
修改数据:
1 cursor = db.cursor(buffered=True) 2 try: 3 sql_update = "update student set age = 28 where name='nan'" 4 cursor.execute(sql_update) 5 db.commit() 6 except mysql.connector.Error as e: 7 print('修改数据失败',str(e)) 8 finally: 9 cursor.close() 10 db.close()
查询数据:
1 cursor = db.cursor(buffered=True) 2 try: 3 # sql_select1 = "select * from student where age>%s" 4 # cursor.execute(sql_select1,(1,)) 5 6 sql_select2 = "select * from student where age>%s" 7 cursor.execute(sql_select2,(26,)) 8 datas1 = cursor.fetchall() #如果在后加上[1]代表是取第一条数据 9 10 cursor.execute(sql_select2,(20,)) 11 datas2 = cursor.fetchone()[1] #如果在后加上[1]代表是取第一个字段 12 datas3 = cursor.fetchmany(5) 13 14 print(datas1) 15 print(datas2) 16 print(datas3) 17 except mysql.connector.Error as e: 18 print("查询数据失败!",str(e)) 19 finally: 20 cursor.c