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 的第一条

 

################################################数据查询汇总结束#############################################
 
 

 

posted @ 2018-04-26 16:31  胸不平$怎平天下  阅读(116)  评论(0编辑  收藏  举报