zoukankan      html  css  js  c++  java
  • MySQL之pymysql模块

    MySQL的pymysql模块

    返回首页

    在Python中,使用该模块是对数据库进行操作的(SQL语句)

    在python2中不仅仅有pymysql,还有mysqlDB,这两个模块的功能是一样的。

    安装pymysql模块:

      pip3 install pymysql  

    python连接mysql方法一问题,会被sql注入。

    import pymysql
    
    username = input("input your username or Email:")
    password = input("input your Password")
    
    def pymysqlconnect(*args,**kwargs):
        """
        mysql连接
        :param args:
        :param kwargs:
        :return:
        """
        conn = pymysql.connect(host='localhost',user='root',password='XXXXXX',database='dbtest')
        # 创建mysql连接
        cursor = conn.cursor()
        # 创建mysql连接游标
        sql = "select * from userinfo where username = '%s' and password = '%s'" %(username,password,)
        print(sql)
        cursor.execute(sql)
        # 执行sql语句
        result = cursor.fetchone()
        print(result)
        # fetchone 只拿取第一条数据
        cursor.close()
        # 关闭游标
        conn.close()
        # 关闭连接
    
    pymysqlconnect()

    python连接mysql方法二解决sql注入问题,将username和password写在execute里面,写成列表的形式。

    import pymysql
    
    username = input("input your username or Email:")
    password = input("input your Password")
    
    def pymysqlconnect(*args,**kwargs):
        """
        mysql连接
        :param args:
        :param kwargs:
        :return:
        """
        conn = pymysql.connect(host='localhost',user='root',password='XXXXXX',database='dbtest')
        # 创建mysql连接
        cursor = conn.cursor()
        # 创建mysql连接游标
        sql = "select * from userinfo where username = %s and password = %s"
        # print(sql)
        cursor.execute(sql,[username,password])
        # 执行sql语句
        result = cursor.fetchone()
        print(result)
        # fetchone 只拿取第一条数据
        cursor.close()
        # 关闭游标
        conn.close()
        # 关闭连接
        if result:
            print('welcome the world')
        else:
            print('your username or password is error')
    
    pymysqlconnect()

    python连接mysql方法三:解决sql注入问题,也可以用字典的形式,将username和password写在execute里面。

    sql = "select * from userinfo where username = %(u)s and password = %(p)s"
    print(sql)
    cursor.execute(sql,{'u':username,'p':password})

    cursor.execute和
    cursor.executemany都有一个返回值,r=cursor.execute和r=cursor.executemany,这个r表示的是受影响的行数。

    pymysql的增删改查操作:注意,增删改 操作必有的一步是commit(),conn.commit()。不然是提交不到数据库的。

    1、增:insert操作

    import pymysql
    
    def pymysqlconnect(*args,**kwargs):
        conn = pymysql.connect(host='localhost',user='root',password='XXXXXX',database='dbtest')
        cursor = conn.cursor()
        sql = "insert into userinfo(username,password) values('jessica','123')"
        print(sql)
        cursor.execute(sql)
        conn.commit()
        cursor.close()
        conn.close()
    
    pymysqlconnect()

      其他insert操作:

        user = 'alex'
        pwd = '123'
        conn = pymysql.connect(host='localhost',user='root',password='XXXXXX',database='dbtest')
        cursor = conn.cursor()
        sql = "insert into userinfo(username,password) values(%s,%s)"
        print(sql)
        cursor.execute(sql,[user,pwd])  #也可以用元祖(user,pwd)
        conn.commit()
        cursor.close()
        conn.close()

      用executemany插入多条数据:

        conn = pymysql.connect(host='localhost',user='root',password='Wangzhe9251',database='dbtest')
        cursor = conn.cursor()
        sql = "insert into userinfo(username,password) values(%s,%s)"
        print(sql)
        cursor.executemany(sql,[('egon','222'),('sir','111')])  #列表里加元祖,可以添加多条数据
        conn.commit()
        cursor.close()
        conn.close()

    2、删:delete操作和insert操作相同。 

    3、改:update操作和insert操作相同。

    4、查: select操作,fetchone()、fetchmany()和fetchall(),fetchmany()可以加参数,表示一次可以去多少。

        例如fetchmany(4) 一次去4个值。fetchall()是拿全部。

            fetchall()默认拿到的是元祖数据,元祖里面有元祖。但是,也可以拿字典数据。

    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) #这样就可以拿到字典数据,是列表里套字典。
    sql = "select * from userinfo"
    cursor.execute(sql)
    result = cursor.fetchall()
    print(result)

    新插入数据的自增ID:cursor.lastrowid

        conn = pymysql.connect(host='localhost',user='root',password='XXXXXX',database='dbtest')
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
        sql = "insert into userinfo(username,password) values('root','123')"
        cursor.execute(sql)
        conn.commit()
        print(cursor.lastrowid)
        #新插入数据的自增ID
        cursor.close()
        conn.close()

    ----- END -----

  • 相关阅读:
    JVM性能调优的6大步骤,及关键调优参数详解
    JVM内存调优原则及几种JVM内存调优方法
    关于大型网站技术演进的思考(十六)--网站静态化处理—前后端分离—下(8)
    关于大型网站技术演进的思考(十五)--网站静态化处理—前后端分离—中(7)
    关于大型网站技术演进的思考(十四)--网站静态化处理—前后端分离—上(6)
    关于大型网站技术演进的思考(十三)--网站静态化处理—CSI(5)
    关于大型网站技术演进的思考(十二)--网站静态化处理—缓存(4)
    关于大型网站技术演进的思考(十一)--网站静态化处理—动静分离策略(3)
    关于大型网站技术演进的思考(十)--网站静态化处理—动静整合方案(2)
    关于大型网站技术演进的思考(九)--网站静态化处理--总述(1)
  • 原文地址:https://www.cnblogs.com/george92/p/7352768.html
Copyright © 2011-2022 走看看