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