pymysql
pymysql 的安装:
方法一:
1.打开本地dos窗口: 2.输入:cmd 3.输入:pip install pymysql
方法2:
1.打开python安装目录:找到\Scripts\ 这个文件件 打开后有: easy_install.exe easy_install-3.6.exe pip.exe pip3.6.exe pip3.exe 看到这样几个应用程序后就说明找对了 2.在Scripts 这个文件中 按住键盘Shift + 鼠标右键 看到在此处打开命令窗后: 输入:pip3. install pymysql 进行安装 查看当前存在模块: pip3 -list 有哪些安装好的模块
链接 :pymysql
1.基本使用:
# 导入pymysql模块: import pymysql # 连接database: conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名,charset=“utf8”)
#得到数据库的光标:
cursor = conn.cursor()
# 定义要执行的SQL语句 sql = """
# 执行上面的SQL语句
cursor.execute(sql)
# 关闭光标对象 cursor.close() # 关闭数据库连接 conn.close()
返回字典格式数据内容:
# 得到一个可以执行SQL语句并且将结果作为字典返回的游标 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 执行SQL语句 cursor.execute(sql)
python-mysql增删改查
增:
#获取一个光标 cursor =conn.cursor() #所要执行的插入sql语句 sql = "insert into userinfo(name,pwd) VALUES (%s,%s)" name="吉泽明步" pwd = "3714" #拼接并执行sql语句 cursor.execute(sql,[name,pwd]) #提交写入数据 conn.commit() #关闭连接 cursor.close() conn.close()
插入后对应的表:
注意:当写入数据的时候VALUES中尽量不要直接添加写入的数据,如果客户登录时候需要对用户名密码判断
如果有这样一条语句:select * from userinfo where name =‘%s’ and passwd='%s';
这样会引入SQL注入问题 入输入账号密码时候
name: alexd “” -- or 1=1 时候账号密码无论是什么都会登录成功
插入数据失败回滚:
在同时2个表操作时候其中一个有问题一个正常 那么就会出现回滚事件
import pymysql conn =pymysql.connect(host='127.0.0.1',port=3306,user="root",password ="admink",database="db1",charset='utf8') #获取一个光标 cursor =conn.cursor() sql1 = "insert into userinfo(name, pwd) VALUES (%s, %s);"
sql2 = "insert into userinfo (name) values(%s)"
name = "Alex" pwd ="123"
book_tite = 'alex da shuaibi '
try: # 执行SQL语句 cursor.execute(sql1, [name, pwd])
cursor.execute(sql2) #不给sql2语句传值,就执行不了
# 提交事务 conn.commit() except Exception as e: # 有异常,回滚事务
print(str(e)) conn.rollback() cursor.close() conn.close()
2.
pymysql运行结果:
注:数据回滚或者添加的语句重复失败后 数据库的自增id 也会随着增长,
待到下一个新增数据时id就会跳过一个因为之前失败的那个已经占了一个id
获取插入数据的ID(关联操作时会用到
! 其实就是 1个数据表提交数据后,取表中的最后一个id
import pymysql
# 建立连接
conn = pymysql.connect(
host="127.0.0.1",
port=3306, # 不是字符串类型(不要加引号)
user="root",
password="admink",
database="db1",
charset="utf8" # 没有-!!!!
)
# 获取一个光标
cursor = conn.cursor()
# 定义将要执行的SQL语句
sql = "insert into userinfo (name, pwd) values (%s, %s);"
name = "wangzhen3号"
pwd = "123456"
# 拼接并执行SQL语句
cursor.execute(sql, [name, pwd])
# 涉及写操作注意要提交
conn.commit()
# 关闭连接
# 获取最新的那一条数据的ID
last_id = cursor.lastrowid
print("最后一条数据的ID是:", last_id)
cursor.close()
conn.close()
取到的最后一个id结果:
插入批量执行:
sql = "insert into userinfo(name,pwd) VALUES (%s,%s);"
#设一个大括号里面用元祖形式添加数据以逗号进行分割
date ={
("高材生","youqian"),
("changjiang","huanghe"),
("alex","dashuaibi")
}
cursor.executemany(sql,date)
#提交写入数据
conn.commit()
#关闭连接
cursor.close()
conn.close()
批量插入查询结果
#############################数据的删除sql语句#####################################
import pymysql conn =pymysql.connect(host='127.0.0.1',port=3306,user="root",password ="admink",database="db1",charset='utf8') #获取一个光标cursor =conn.cursor() #一个删除数据的sql语句 sql ="delete from userinfo where name=%s;" #要删除的条件 name="alex" # 拼接并执行SQL语句 cursor.execute(sql,[name]) #提交执行数据 conn.commit() #关闭连接 cursor.close() conn.close() '''
######################################数据的更改#######################################
import pymysql
conn =pymysql.connect(host='127.0.0.1',port=3306,user="root",password ="admink",database="db1",charset='utf8')
#获取一个光标
cursor =conn.cursor()
#一个更改用户密码的更新 sql ="update userinfo set pwd=%s where name =%s;" #更改条件中pwd密码为666, where的条件是name="吉泽明步" cursor.execute(sql,["666","吉泽明步"]) #提交执行数据 conn.commit() #关闭连接 cursor.close() conn.close() '''
#########################################################数据查询#############################################
###########################数据的fetchall()方法查询#################
mport pymysql conn =pymysql.connect(host='127.0.0.1',port=3306,user="root",password ="admink",database="db1",charset='utf8')
#设置返回字典形式的数据 cursor =conn.cursor(cursor=pymysql.cursors.DictCursor) sql = "select name,pwd from userinfo;" cursor.execute(sql)
#取数据表中的所有数据 ret = cursor.fetchall() #关闭连接 cursor.close() conn.close()
#返回的是列表中的字典:
#[{'name': 'changjiang', 'pwd': 'huanghe'}, {'name': '高材生', 'pwd': 'youqian'}, {'name': '吉泽明步', 'pwd': '3714'}]
###########################数据的fetchone查询####################
mport pymysql conn =pymysql.connect(host='127.0.0.1',port=3306,user="root",password ="admink",database="db1",charset='utf8')
#仅查询一条 #设置返回字典形式的数据 cursor =conn.cursor(cursor=pymysql.cursors.DictCursor) sql = "select name,pwd from userinfo;" cursor.execute(sql)
#查询数据表中的第一条数据 ret = cursor.fetchone() #关闭连接 cursor.close() conn.close() print(ret) #返回的:数据中从前到后顺序 #结果 {'name': 'changjiang', 'pwd': 'huanghe'}
###########################数据的fetchmany查询##########################
mport pymysql conn =pymysql.connect(host='127.0.0.1',port=3306,user="root",password ="admink",database="db1",charset='utf8')
#fetchmany是一个指定查询数量的语句 #设置返回字典形式的数据 cursor =conn.cursor(cursor=pymysql.cursors.DictCursor) sql = "select name,pwd from userinfo;" cursor.execute(sql) #条件是返回查询2条的结果 ret = cursor.fetchmany(2) #关闭连接 cursor.close() conn.close()
print(ret)
#结果:[{'name': 'changjiang', 'pwd': 'huanghe'}, {'name': '高材生', 'pwd': 'youqian'}]
################s数据绝对移动cursor.scroll(1, mode="absolute")查询###############
mport pymysql conn =pymysql.connect(host='127.0.0.1',port=3306,user="root",password ="admink",database="db1",charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) sql = "select name,pwd from userinfo"
cursor.execute(sql)
#fetchone()需要配合 mode="avslute" 一起使用 ret3 = cursor.fetchone() #取绝对值数据的第一条 cursor.scroll(1, mode="absolute") cursor.close() conn.close() print(ret3) #结果:{'name': 'changjiang', 'pwd': 'huanghe'} 这是id为1 的第一条
################s数据绝对移动cursor.scroll(1, mode="absolute")查询###############
mport pymysql conn =pymysql.connect(host='127.0.0.1',port=3306,user="root",password ="admink",database="db1",charset='utf8') cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) sql = "select name,pwd from userinfo" cursor.execute(sql) #fetchone()需要配合 mode="avslute" 一起使用 ret3 = cursor.fetchone() #取相对值数据的下面一条数据、 cursor.scroll(1, mode="relative") cursor.close() conn.close() print(ret3) #结果:{'name': 'changjiang', 'pwd': 'huanghe'} 这是id为1 的第一条
################################################数据查询汇总结束#############################################