数据库补充复习(二),创建数据库连接

    xiaoxiao2025-08-06  7

    数据库补充复习(二),创建数据库连接 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)
    最新回复(0)