Python连接MySQL数据库之pymysql模块使用

您所在的位置:网站首页 pymysql安装 Python连接MySQL数据库之pymysql模块使用

Python连接MySQL数据库之pymysql模块使用

2023-03-10 10:55| 来源: 网络整理| 查看: 265

Python3连接MySQL

本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用。

PyMySQL介绍

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

Django中也可以使用PyMySQL连接MySQL数据库。

PyMySQL安装 #终端中安装pymysql pip install pymysql python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作 折腾好半天的数据库连接,由于之前未安装 pip ,而且自己用的python 版本为3.6. 只能用 pymysql 来连接数据库,(如果有和我一样未安装 pip 的朋友请 点这里http://blog.csdn.net/qq_37176126/article/details/72824404  ),下边 简单介绍一下 连接的过程,以及简单的增删改查操作。 1.通过 pip 安装 pymysql 进入 cmd  输入  pip install pymysql   回车等待安装完成; 安装完成后出现如图相关信息,表示安装成功。 连接数据库 MySQL 连接 使用mysql二进制方式连接

您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库。

实例

以下是从命令行中连接mysql服务器的简单实例:

#[root@host]# mysql -u root -p #Enter password:******

 

在登录成功后会出现 mysql> 命令提示窗口,你可以在上面执行任何 SQL 语句。

以上命令执行后,登录成功输出结果如下:

#Welcome to the MySQL monitor. Commands end with ; or \g. #Your MySQL connection id is 2854760 to server version: 5.0.9 #Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

 

在以上实例中,我们使用了root用户登录到mysql服务器,当然你也可以使用其他mysql用户登录。

如果用户权限足够,任何用户都可以在mysql的命令提示窗口中进行SQL操作。

退出 mysql> 命令提示窗口可以使用 exit 命令,如下所示:

mysql> exit Bye

 

创建数据库

#-- 创建一个名为day59的数据库cerate database day59; # -- 使用day59数据库 use day59; #-- 创建一个userinfo表 create table userinfo (id int auto_increment primary key,name varchar(10) not null, pwd varchar(18) not null ); #-- 查看表结构是否正确 desc userinfo; #-- 添加3条测试数据 insert into userinfo (name, pwd) values ("alex", "alex3714"),("xiaohei", "123456"),("yimi", "654321"); #-- 查看数据 select * from userinfo; #-- 根据特定的用户名和密码从数据库中检索 select * from userinfo where name="alex" and pwd="alex3714";

 

注意事项

在进行本文以下内容之前需要注意:

你有一个MySQL数据库,并且已经启动。 你有可以连接该数据库的用户名和密码 你有一个有权限操作的database 基本使用 # 导入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() #注意:harset="utf8",中间没有空格,因为mySql不支持

 

 

返回字典格式数据:

# 导入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"

数据库版登录

 

增删改查操作 增

 

# 导入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()

mysql端:

 

  

插入数据失败回滚

# 导入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(关联操作时会用到)

# 导入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()

 

 

批量执行

# 导入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()

由于数据库的编码格式不一样所以出现乱码:

创建数据库的时候指定编码需要:

创建列表的时候也要指定一下,避免乱码:

 

 

 

删 # 导入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()

 

改 # 导入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()

 

查 #查询操作 import pymysql #导入 pymysql #打开数据库连接 db= pymysql.connect(host="localhost",user="root", password="123456",db="test",port=3307) # 使用cursor()方法获取操作游标 cur = db.cursor() #1.查询操作 # 编写sql 查询语句 user 对应我的表名 sql = "select * from user" try: cur.execute(sql) #执行sql语句 results = cur.fetchall() #获取查询的所有记录 print("id","name","password") #遍历结果 for row in results : id = row[0] name = row[1] password = row[2] print(id,name,password) except Exception as e: raise e finally: db.close() #关闭连接

 

 

查询单条数据

# 导入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)

 

 

查询多条数据

# 导入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)

 

 

 进阶用法 # 可以获取指定数量的数据 cursor.fetchmany(3) # 光标按绝对位置移动1 cursor.scroll(1, mode="absolute") # 光标按照相对位置(当前位置)移动1 cursor.scroll(1, mode="relative")

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3