【Python】PyMySQL 连接 MySQL数据库 您所在的位置:网站首页 mysql数据库连接方法 【Python】PyMySQL 连接 MySQL数据库

【Python】PyMySQL 连接 MySQL数据库

2024-07-10 01:04| 来源: 网络整理| 查看: 265

PyMySQL连接 Mysql 安装 PyMySQLPyMySQL 连接数据库创建数据库(数据库必须存在)创建数据表插入操作查询操作更新操作删除操作综合案例Connection ObjectCursor Objects

两种方法进行数据库的连接分别是 PyMySQL 和 mysql.connector,我们学习 PyMySQL。

操作步骤:

连接数据库 conn = pymysql.connect()生成游标对象 curosr = conn.cursor()执行SQL语句 cursor.execute(sql)关闭游标 cursor.close()关闭连接 conn.closr()

PyMySQL 是在 Python3.4 以后版本中用于连接 MySQL 数据库的一个模块;

Python2 中则使用 mysqldb

安装 PyMySQL

首先要安装这个模块:

pip install pymysql

检查一下是否安装成功:

pip show pymysql PyMySQL 连接数据库 import pymysql # 创建数据库连接 conn = pymysql.connect( host = '127.0.0.1', # 连接主机, 默认127.0.0.1 user = 'root', # 用户名 passwd = '1234',# 密码 port = 3306, # 端口,默认为3306 db = 'test', # 数据库名称 charset = 'utf8' # 字符编码 ) # 生成游标对象 cursor cursor = conn.cursor() # 查询数据库版本 cursor.execute("select version()") # 返回值是查询到的数据数量 # 通过 fetchall方法获得数据 data = cursor.fetchone() print("Database Version:%s" % data) cursor.close() # 关闭游标 conn.close() # 关闭连接 创建数据库(数据库必须存在)

由于连接数据库时需要填要连接的数据库名,所以创建数据库只能做到:删除已经存在的数据库,再重新创建,相当于 清空数据库 的作用。

# 创建数据库 test cursor.execute("drop database if exists test") #如果数据库已经存在,那么删除后重新创建 sql = "create database test" cursor.execute(sql) 创建数据表 # 创建数据表 cursor.execute("drop table if exists employee") # 如果数据表已经存在,那么删除后重新创建 sql = """ CREATE TABLE employee ( id VARCHAR(20) NOT NULL, name VARCHAR(20), age INT, income FLOAT ) """ cursor.execute(sql) 插入操作 # 数据库插入数据 sql = "INSERT INTO employee VALUES ('1', '张三', 20, 5000)" try: cursor.execute(sql) # 提交当前游标的全部操作 conn.commit() except: print("expection!") conn.rollback() # 查看更新后的结果 sql = "SELECT* FROM employee" cursor.execute(sql) data = cursor.fetchall() print(data) 查询操作

只查询出一条数据:cursor.fetchone()

sql = "SELECT* FROM employee" cursor.execute(sql) # 返回值是查询到的数据数量 data = cursor.fetchone() # 查询一条数据 print(data)

查询数据库中所有数据:cursor.fetchall()

# 数据库查询数据 sql = "SELECT * FROM employee" cursor.execute(sql) # 返回值是查询到的数据数量 data = cursor.fetchall() # 查询一条数据 print(data)

查询指定条件的数据:查询满足条件 income > 5000 的数据。

# 查询指定条件的数据 sql = " SELECT * FROM employee WHERE income > '%d' " % (5000) cursor.execute(sql) # 返回值是查询到的数据数量 data = cursor.fetchone() print(data) 更新操作 # 更新数据库 sql = " UPDATE employee SET age = age + 1 WHERE age < '%d' " % (25) try: cursor.execute(sql) conn.commit() except: print("expection!") conn.rollback() # 查看更新后的结果 sql = "SELECT* FROM employee" cursor.execute(sql) data = cursor.fetchall() print(data) 删除操作 # 删除数据 sql = "DELETE FROM employee WHERE age > '%d' " % (30) try: cursor.execute(sql) conn.commit() except: print("exce[tion!") conn.rollback() #查看更新后的结果 sql = "select * from employee" cursor.execute(sql) data = cursor.fetchone() print(data) 综合案例

保证数据库中有 test 表:

import pymysql import traceback from time import sleep class PyMySQL(object): create_table = """ CREATE TABLE stu ( id INT not null PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, age INT, sex VARCHAR(255) ) DEFAULT CHARSET = utf8 """ select = 'SELECT * FROM stu' update = 'UPDATE stu SET name = "明明" WHERE id=2' delete = 'DELETE FROM stu WHERE id=9' insert = 'INSERT INTO stu(name, age, sex) VALUES("%s", "%d", "%s")' % ('小明', 2, "男") def __init__(self, host, user, pwd, db): self.conn = pymysql.connect(host, user, pwd, db) self.cursor = self.conn.cursor() print("数据库连接成功!") def closeAll(self): self.conn.close() self.cursor.close() print("资源释放完毕!") def create_table_func(self): self.cursor.execute("DROP TABLE IF EXISTS stu") self.cursor.execute(PyMySQL.create_table) print('数据表创建完毕') def insert_date(self): try: self.cursor.execute(PyMySQL.insert) self.conn.commit() print("数据插入成功!") except: print(traceback.format_exc()) self.conn.rollback() print("数据插入失败!") def update_data(self): try: self.cursor.execute(PyMySQL.update) self.conn.commit() print("数据更新成功!") except: print(traceback.format_exc()) self.conn.rollback() print("数据更新失败!") def delete_data(self): try: self.cursor.execute(PyMySQL.delete) self.conn.commit() print("数据删除成功!") except: print(traceback.format_exc()) self.conn.rollback() print("数据删除失败!") def select_data(self): self.cursor.execute(PyMySQL.select) all_data = self.cursor.fetchall() for i in all_data: print('查询结果为:{}'.format(i)) if __name__ == '__main__': my = PyMySQL('localhost','root','1234','test') my.create_table_func() my.insert_date() my.update_data() my.delete_data() my.select_data() my.closeAll() Connection Object

Connection 类提供以下方法:

.close() 从这一点开始,连接将不可用;如果试图对连接执行任何操作,将会引发错误(或子类)异常.commit() 将操作提交到数据库; 如果数据库支持自动提交特性,则必须首先关闭此功能; 可以提供一个接口方法将其重新打开;.cursor() 创建游标,用于执行 SQL 语句.rollback() 此方法是可选的,因为并非所有数据库都提供事务支持; 如果数据库确实提供事务,此方法将导致数据库回滚到任何挂起事务的开始; 在不首先提交更改的情况下关闭连接将导致执行隐式回滚; Cursor Objects

游标对象具有以下常用方法

.close() 关闭游标对象,从这一点开始,游标对象将不可用; 如果试图使用游标执行任何操作,将引发错误(或子类)异常。.execute() 执行数据库操作(查询或命令等SQL语句); 返回值没有定义。.fetchone() 获取查询结果的下一行,返回单个序列,或者在没有更多数据可用时返回 None 如果 execute() 的调用没有生成任何结果,或者还没有执行,则会引发错误(或子类)异常。.fetchall() 获取查询结果的所有(剩余)行,以序列的形式返回它们(例如元组列表) 如果前面对 .execute() 的调用没有生成任何结果集,或者还没有发出调用,则会引发错误(或子类)异常。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有