PyMySQL 是在 Python3.x 版本中用于链接 MySQL 服务器的一个库,Python2中则使用mysqldb。python
PYmysql安装mysql
pip install pymysql
建立链接sql
# 导入pymysql模块 import pymysql # 链接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 获得一个能够执行SQL语句的光标对象 cursor = conn.cursor() # 定义要执行的SQL语句 sql = """ CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE, age TINYINT NOT NULL )ENGINE=innodb DEFAULT CHARSET=utf8; """ # 执行SQL语句 cursor.execute(sql) # 关闭光标对象 cursor.close() # 关闭数据库链接 conn.close() 复制代码
返回字典格式数据:数据库
# 导入pymysql模块 import pymysql # 链接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 获得一个能够执行SQL语句而且将结果做为字典返回的游标 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 定义要执行的SQL语句 sql = """ CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE, age TINYINT NOT NULL )ENGINE=innodb DEFAULT CHARSET=utf8; """ # 执行SQL语句 cursor.execute(sql) # 关闭光标对象 cursor.close() # 关闭数据库链接 conn.close() 复制代码
简单验证功能api
import pymysql name =input('请输入帐号'); pwd =input('请输入密码') conn =pymysql.connect(host ='127.0.0.1',port=3306, user = 'root',password ='123456',database ='day59') cursor =conn.cursor() #获取一个光标,等等输入sql语句 sql ='select * from userinfo where name =%s and pwd =%s ;' #帮我拼接字符串的sql语句,而且去数据库执行. ret =cursor.execute(sql,[name,pwd]) #关闭 cursor.close() conn.close() if ret: print('login successfully') else: print('login failed!')
注意 : 服务器
charset =‘utf8’ ,不要写成utf-8fetch
增删改查操做spa
1、增长数据code
1.一、经过python 为mysql添加多条数据 对象
import pymysql conn = pymysql.connect( host ='127.0.0.1', port =3306, #不是字符串不须要加引号。 user ='root', password ='123456', database ='day59', charset ='utf8' ) #获取一个光标 cursor =conn.cursor() #定义要执行的sql语句 sql ='insert into userinfo(name,pwd) values(%s,%s);' data =[ ('高材生','woyouqian'), ('changjiang','huanghe'), ('zhanshen','jichuchapiqida') ] #拼接并执行sql语句 cursor.executemany(sql,data) #涉及写操做要注意提交 conn.commit() #关闭链接 cursor.close() conn.close()
output result:
1.二、插入单条数据
import pymysql conn =pymysql.connect( host ='127.0.0.1', port = 3306, user = 'root', password ='123456', database ='day59', charset ='utf8' ) cursor =conn.cursor() 获取一个光标 sql =' insert into userinfo (name,pwd) values (%s,%s);' name = 'wangzhen' pwd = '123456' cursor.execute(sql, [name,pwd]) conn.commit() cursor.close() conn.close()
1.3 、获取最新插入数据 (最后一条)
import pymysql # 创建链接 conn = pymysql.connect( host="127.0.0.1", port=3306, # 不是字符串类型(不要加引号) user="root", password="123456", database="day59", 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()
输出结果
2、删除操做
import pymysql # 创建链接 conn = pymysql.connect( host="127.0.0.1", port=3306, # 不是字符串类型(不要加引号) user="root", password="123456", database="day59", charset="utf8" # 没有-!!!! ) # 获取一个光标 cursor = conn.cursor() # 定义将要执行的SQL语句 sql = "delete from userinfo where name=%s;" name = "高材生" # 拼接并执行SQL语句 cursor.execute(sql, [name]) # 涉及写操做注意要提交 conn.commit() # 关闭链接 cursor.close() conn.close()
三 、更改数据
""" pymysql插入新数据 """ import pymysql # 创建链接 conn = pymysql.connect( host="127.0.0.1", port=3306, # 不是字符串类型(不要加引号) user="root", password="123456", database="day59", charset="utf8" # 没有-!!!! ) # 获取一个光标 cursor = conn.cursor() # 定义将要执行的SQL语句 sql = "update userinfo set pwd=%s where name=%s;" # 拼接并执行SQL语句 cursor.execute(sql, ["woshixinmima", "alex"]) # 涉及写操做注意要提交 conn.commit() # 关闭链接 cursor.close() conn.close()
4、fetch数据(查询数据)
import pymysql conn = pymysql.connect( host ='127.0.0.1', port =3306, #不是字符串不须要加引号。 user ='root', password ='123456', database ='day59', charset ='utf8' ) #获取一个光标 # cursor = conn.cursor()# 默认返回元组数据类型 cursor = conn.cursor(cursor =pymysql.cursors.DictCursor)#返回字典数据类型 #定义将要执行的sql语句 sql = 'select name,pwd from userinfo;' #拼接并执行sql语句 cursor.execute(sql) #取到查询结果 ret1 =cursor.fetchone() #取一条 ret2 =cursor.fetchmany(3)# 取三条 ret3 =cursor.fetchone() #取一条 cursor.close() conn.close() print(ret1) print(ret2) print(ret3)
# 能够获取指定数量的数据 cursor.fetchmany(3) # 光标按绝对位置移动1 cursor.scroll(1, mode="absolute") # 光标按照相对位置(当前位置)移动1 cursor.scroll(1, mode="relative")
输出结果:
5、数据回滚
""" pymysql插入新数据 """ import pymysql # 创建链接 conn = pymysql.connect( host="127.0.0.1", port=3306, # 不是字符串类型(不要加引号) user="root", password="123456", database="day59", charset="utf8" # 没有-!!!! ) # 获取一个光标 cursor = conn.cursor() # 定义将要执行的SQL语句 sql1 = "insert into userinfo (name, pwd) values (%s, %s);" sql2 = "insert into book (name) values (%s);" name = "wangzhen2号" pwd = "123456" book_title = "Python从入门到放弃" try: # 拼接并执行SQL语句 cursor.execute(sql1, [name, pwd]) cursor.execute(sql2) # 报错的SQL语句 # 涉及写操做注意要提交 conn.commit() except Exception as e: print(str(e)) # 有异常就回滚 conn.rollback() # 关闭链接 cursor.close() conn.close()