Python MySQL(pymysql的使用day1)

  1. 连接数据库
    1. 查:
      1. con = pymysql.connect(host="localhost",user="root",password="",database="xxx")   
        #  返回一个值,但执行语句还需要一个光标,就跟程序和线程差不多一个关系
      2. cursor = con.cursor()    #  这就是光标
      3. sql="select * from userinfo where user='%s' % (user)"
        cursor.execute(sql)       #  让光标帮你执行sql语句
      4. 但是最好不要自己拼接,否则用户可能会自己输入特殊语句
        比如:在user处输入  xxx or 1=1 -- , 就变成select * from userinfo where user =xx ' or 1 == 1 --  这样加入注释后面的所有判断语句都会被注释掉导致判断为True(SQL注入)
      5. 所以应该  sql="select * from userinfo where user=%s" 
                         cursor.excute(sql,user)     
        #  excute会自己帮我们拼接,后面的参数还支持列表和字典
      6. ret=cursor.fetchone()   #  执行的结果是一个返回值用  fetcht 取出,fetchtone只取一个,但是多次执行同一个语句将取出第1、2、3条,事实证明,取的时候是有指针在移动的,所以我们也可以修改指针的位置
      7. cursor.scroll(1,mode='relative')      #  相对当前位置移动
        cursor.scroll(2,mode='absolute')    #  相对绝对位置移动
      8. fetchmany(4)  #  一次性取多条
      9. fetchall()         #  全部取出,一般要么取一条,要么全部取出,如果取多条可以在命令中用limit来限制
      10. 取出时如果不看原表,就不知道每个数据对应的是什么,所以可以使用命令来把显示的数据用字典来表示
        cursor=con.cursor(cursor=pymysql.cursors.DictCursor)
    2. 增删改:
      1. 增删改时,应该在cursor.execute(sql)后加一个
        con.commit()    #  数据提交,否则原表就不会改变
      2. 如果想同时添加多个时可以
        cursor.executemany(sql,[(),(),()])      #  该语句也有一个返回值,表示受影响的行数,如果增加(修改)了第一行,那么受影响的行数就是1,同理删和改一样
      3. cursor.lastrowid()    #  可以得到新增数据的自增ID,如果插入多条那就是最后一个的自增ID
  2. 关闭数据库
    1. con.close() 
      cursor.close()                 #  两个都要关闭
posted @ 2020-03-12 22:47  otome  阅读(203)  评论(0编辑  收藏  举报