數據庫補充複習(二),建立數據庫鏈接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)