pymysql模块

一、安装模块

    pymysql是基于事务的模块,不需要写start transaction开启事务

    pip install pymysql

二、连接数据库

    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='db_name')

三、拿到游标

    cursor = conn.cursor()

    获取数据结果的数据类型,默认是元组

    改为字典等:conn.cursor(cursor=pymysql.cursors.DictCursor)

四、通过游标执行语句

    sql = """CREATE TABLE EMPLOYEE (
        FIRST_NAME  CHAR(20) NOT NULL,
        LAST_NAME  CHAR(20),
        AGE INT,
        SEX CHAR(1),
        INCOME FLOAT )"""

    row_affected =cursor.execute(sql)  # sql注入
    row_affected =cursor.execute(sql, *args) 

    
    返回值row_affected表示有多少行执行结果

    查看查询的数据

        查看一条:res = cursor.fetchone()

        查看多条:res = cursor.fetchmany(2)  2条

        查看全部:res = cursor.fetchall()

    注意!

    查看数据后,游标会移动

    cursor.scroll(-1,mode='relative')  # 相对当前位置移动

    cursor.scroll(2,mode='absolute') # 相对绝对位置移动

    事务回滚:conn.rollback()

  最后一条记录id(最新):cursor.lastrowid 五、提交 增,删,改需要提交 conn.commit() 六、关闭 conn.close()

 

防止sql注入:sql语句不要拼接字符串

import pymysql

username = 'admin'
passwd = '123'

# 连接数据库
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='db_name')

# 拿到游标,获取数据结果的数据类型,默认是元组
cursor = conn.cursor()

# 获取数据结果的数据类型:字典
# cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

# 方式一:存在sql注入
# sql = 'select * from user where username='%s and passwd=%s' % (username, passwd)
# row_affected = cursor.execute(sql)

# 方式2
sql = 'select * from user where username='%s and passwd=%s'
# 执行sql语句,返回值 row_affected表示有几条记录被影响
row_affected = cursor.execute(sql, username, passwd)

# 方式3
# sql = 'select * from user where username='%(username)s and passwd=%(pwd)s'
# row_affected = cursor.execute(sql, {'username':username, 'pwd': passwd})

# 查看查询的数据, 查看数据后,游标会移动
# 查看一条:
res = cursor.fetchone()
# 关闭游标
cursor.close()
# 断开连接
conn.close()

 

sql = 'insert into user(username, passwd) values(%s, %s)'
cursor.execute(sql, username, passwd)
conn.commit()
增,删, 改需要commit

 

cursor.executemany(sql, [('abc', 'abc'),('abc', 'abc'),...])
插入多条记录

 

# 查看一条:
res = cursor.fetchone()

# 查看多条:
res = cursor.fetchmany(2)  # 2条

# 查看全部:
res = cursor.fetchall()

 

cursor.scroll(-1,mode='relative')  # 相对当前位置移动

cursor.scroll(2,mode='absolute') # 相对绝对位置移动
游标

 

cursor.lastrowid
最后一条记录的id

 

posted @ 2019-03-01 10:32  李小样  阅读(93)  评论(0编辑  收藏  举报