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 -----

posted @ 2017-08-13 11:14  王先生是胖子  阅读(119)  评论(0编辑  收藏  举报