zoukankan      html  css  js  c++  java
  • 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()                 #  两个都要关闭
  • 相关阅读:
    springcloud的配置
    springboot面试题
    SqlServer取值四舍五入
    java导出Excel表格简单的方法
    pandas处理数据textrank提取关键词
    toarray()时出现memory error问题解决
    回溯法解决N皇后问题 C语言
    图论中四个最短路径算法
    第一个java程序
    js 实现简单屏蔽某个地区的访问
  • 原文地址:https://www.cnblogs.com/otome/p/12483419.html
Copyright © 2011-2022 走看看