PyMySQL模块的使用

1、PyMySQL介绍

PyMySQL 是在 Python3.x 版本中用于链接 MySQL 服务器的一个库,Python2中则使用mysqldb。mysql

Django中也能够使用PyMySQL链接MySQL数据库。sql

2、PyMySQL安装

pip install pymysql

3、链接数据库

1. 注意事项

在进行本文如下内容以前须要注意:数据库

  • 你有一个MySQL数据库,而且已经启动。
  • 你有能够链接该数据库的用户名和密码
  • 你有一个有权限操做的database

2. 基本使用

复制代码
# 导入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()
复制代码

返回字典格式数据:语法:在cursor(cursor=pymysql.cursors.DictCursor)  表示返回一个字典格式  (列表中放着多个字典)服务器

复制代码
# 导入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()
复制代码

备注:特别注意:charset = "utf8",编码类型不要写成"utf-8"   cursor 不指定返回的类型时,默认返回一个元组类型的数据(大元祖里面放着小元组)。fetch

4、增删改查操做

1. 增

复制代码
# 导入pymysql模块 import pymysql # 链接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 获得一个能够执行SQL语句的光标对象 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" username = "Alex" age = 18 # 执行SQL语句 cursor.execute(sql, [username, age]) # 提交事务 conn.commit() cursor.close() conn.close()
复制代码

插入数据失败回滚编码

复制代码
# 导入pymysql模块 import pymysql # 链接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 获得一个能够执行SQL语句的光标对象 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" username = "Alex" age = 18 try: # 执行SQL语句  cursor.execute(sql, [username, age]) # 提交事务  conn.commit() except Exception as e: # 有异常,回滚事务  conn.rollback() cursor.close() conn.close()
复制代码

获取插入数据的ID(关联操做时会用到)spa

复制代码
# 导入pymysql模块 import pymysql # 链接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 获得一个能够执行SQL语句的光标对象 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" username = "Alex" age = 18 try: # 执行SQL语句  cursor.execute(sql, [username, age]) # 提交事务  conn.commit() # 提交以后,获取刚插入的数据的ID last_id = cursor.lastrowid except Exception as e: # 有异常,回滚事务  conn.rollback() cursor.close() conn.close()
复制代码

批量执行code

复制代码
# 导入pymysql模块 import pymysql # 链接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 获得一个能够执行SQL语句的光标对象 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" data = [("Alex", 18), ("Egon", 20), ("Yuan", 21)] try: # 批量执行多条插入SQL语句  cursor.executemany(sql, data) # 提交事务  conn.commit() except Exception as e: # 有异常,回滚事务  conn.rollback() cursor.close() conn.close()
复制代码

2. 删

复制代码
# 导入pymysql模块 import pymysql # 链接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 获得一个能够执行SQL语句的光标对象 cursor = conn.cursor() sql = "DELETE FROM USER1 WHERE id=%s;" try: cursor.execute(sql, [4]) # 提交事务  conn.commit() except Exception as e: # 有异常,回滚事务  conn.rollback() cursor.close() conn.close()
复制代码

3. 改

复制代码
# 导入pymysql模块 import pymysql # 链接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 获得一个能够执行SQL语句的光标对象 cursor = conn.cursor() # 修改数据的SQL语句 sql = "UPDATE USER1 SET age=%s WHERE name=%s;" username = "Alex" age = 80 try: # 执行SQL语句  cursor.execute(sql, [age, username]) # 提交事务  conn.commit() except Exception as e: # 有异常,回滚事务  conn.rollback() cursor.close() conn.close()
复制代码

 

4. 查

查询单条数据对象

复制代码
# 导入pymysql模块 import pymysql # 链接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 获得一个能够执行SQL语句的光标对象 cursor = conn.cursor() # 查询数据的SQL语句 sql = "SELECT id,name,age from USER1 WHERE id=1;" # 执行SQL语句 cursor.execute(sql) # 获取单条查询数据 ret = cursor.fetchone() cursor.close() conn.close() # 打印下查询结果 print(ret)
复制代码

查询多条数据blog

复制代码
# 导入pymysql模块 import pymysql # 链接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 获得一个能够执行SQL语句的光标对象 cursor = conn.cursor() # 查询数据的SQL语句 sql = "SELECT id,name,age from USER1;" # 执行SQL语句 cursor.execute(sql) # 获取多条查询数据 ret = cursor.fetchall() cursor.close() conn.close() # 打印下查询结果 print(ret)
复制代码

 5、进阶用法

复制代码
# 能够获取指定数量的数据 cursor.fetchmany(3) # 光标按绝对位置移动1 cursor.scroll(1, mode="absolute") # 光标按照相对位置(当前位置)移动1 能够为负数,超出范围直接报错 IndexError cursor.scroll(1, mode="relative")
复制代码

 

给SQL语句中传参也能够使用字典的形式:

  好比:  sql = 'select salary,age from person where name=%(name)s'

cursor.execute(sql,{name:‘值’})

相关文章
相关标签/搜索