数据库补充复习(二),建立数据库链接1.注:连表 left join on 表1 left join 表二 on 若是表1中的数据多,表2少,就用null补 right join inner join 只要有null,那么整行数据就会被舍弃 平均值:avg获取平均值 临时表:查询操做的结果会以临时表的状态呈现(1)子查询: select(select caption from 表 where cid=score.sid limit 0,1),'shuxue',1,sid,num from score;(2)表的关联:2.数据库链接(1)正常链接操做 #author: wylkjj #date:2019/5/23 import pymysql #建立链接 conn = pymysql.connect(host="127.0.0.1",port=3306,user="root", password="1234",db="jsp02",charset='utf8') #建立游标 cursor = conn.cursor() #执行sql,并返回收影响行数 effect_row = cursor.execute("insert into users(UserID,UserName,UserPwd,UserAnnCount,UserPhone) " "values('201145','ericw','123456','2','123455467')") #提交,否则没法保存新建或者修改的数据 conn.commit() #关闭游标 cursor.close() #关闭链接 conn.close()(2)变量操做 import pymysql #建立链接 conn = pymysql.connect(host="127.0.0.1",port=3306,user="root", password="1234",db="jsp02",charset='utf8') #建立游标 cursor = conn.cursor() #执行sql,并返回收影响行数 #第一种方式字符串拼接,能够运行可是严令禁止使用,由于会形成sql注入 inp=input('请输入name:') sql = "insert into user(name) values ('%s')" sql = sql %(inp,) #对sql语句的输入进行格式化(字符串拼接) r = cursor.execute(sql) #第二种方式参数传递 inp=input('请输入name:') r = cursor.execute("insert into user(name) values (%s)",inp)#内部机制会自动进行参数传递 #提交,否则没法保存新建或者修改的数据 conn.commit() #关闭游标 cursor.close() #关闭链接 conn.close()(3)cursor.executemany() 内部作了循环可进行多条语句插入 l=[ ('123',12,'adsasd'), ('123',10,'adsasd'), ('123',102,'adsasd') ] #列表 r=cursor.executemany("insert into user(name) values (%s)",l) #其它均同样(4)增删改查操做同以前的同样 execute()进行查找的时候返回的是数据的条数 注:execute()执行sql语句后用fetchall()去内存取出并打印数据 fetchall()查找并打印全部数据条数,并以元组方式打印(要会,重要) fetchone()第一条数据(要会,重要) fetchmoney(3)取三条,可任意取 注:移动指针所在位置 scroll(1,mode='relative')#相对当前位置移动,-1就是后移动 scroll(2,mode='absolute')#相对绝对位置移动(5)sql注入:注释漏洞 -- ('eric" or 1=1 -- ',123456)#要加空格,不然不知足注释条件(6)游标参数 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) 查询操做的返回值就会从默认的元组变成字典形式打印(7)信息的ID,插入数据时所在第几条数 nid = cursor.lastrowid print(nid)#注:若是插入多条数据,只返回最后一条的ID(8)反射: #author: wylkjj #date:2019/5/26 from src import comments # comments.add()#正常状况下 #反射 func_name = 'add'#comments中的函数add func = getattr(comments,func_name) func()(9)经过字符串动态导入模块 model = 'src.comments' func_name = 'add' import importlib m=importlib.import_module(model) func=getattr(m,func_name) func() print(m)