python数据库操作mysql:pymysql、sqlalchemy常见用法详解

Python数据库操作MySQL:pymysql、SQLAlchemy常见用法详解

本篇攻略将详细讲解Python通过pymysql和SQLAlchemy库操作MySQL数据库的常见使用方法。

pymysql

pymysql是使用Python操作MySQL数据库的最常用模块,因为它易于使用和强大的功能,下面将分别介绍安装pymysql、连接数据库、数据库操作和关闭数据库连接等核心知识。

安装pymysql

在Python环境中使用pymysql进行MySQL数据库操作,需要先安装pymysql模块。如果你使用的是Anaconda或Miniconda,可以通过以下命令进行安装:

conda install pymysql

如果你使用pip来管理Python的包,可以通过以下命令进行安装:

pip install pymysql

连接数据库

连接MySQL数据库需要指定 hostname(主机名)、username(用户名称)、password(用户密码)和database(要连接的数据库名称)。pymysql模块提供了connect()函数来连接MySQL数据库,下面是使用pymysql连接MySQL数据库的示例代码:

import pymysql

conn = pymysql.connect(
    host='localhost', 
    user='root', 
    password='123456', 
    database='test', 
    charset='utf8mb4'
)

数据库操作

连接到MySQL数据库后,我们就可以进行数据的增删改查操作。pymysql模块提供了cursor()方法,用于从数据库中检索数据,下面将分别介绍如何进行增删改查,以及如何提交、回滚和关闭事务的操作。

插入数据

插入数据是向数据库中添加新数据的一种方法。使用pymysql库可以使用以下示例代码向数据库中插入一条数据:

import pymysql

conn = pymysql.connect(
    host='localhost', 
    user='root', 
    password='123456', 
    database='test', 
    charset='utf8mb4'
)

try:
    with conn.cursor() as cursor:
        sql = "INSERT INTO `users` (`id`, `name`, `age`) VALUES (%s, %s, %s)"
        cursor.execute(sql, (1, 'Tom', 20))
    conn.commit()
except:
    conn.rollback()
finally:
    conn.close()

查询数据

查询数据是从数据库中检索数据的一种方法。使用pymysql库可以使用以下示例代码从数据库中查询数据:

import pymysql

conn = pymysql.connect(
    host='localhost', 
    user='root', 
    password='123456', 
    database='test', 
    charset='utf8mb4'
)

try:
    with conn.cursor() as cursor:
        sql = "SELECT * FROM `users`"
        cursor.execute(sql)
        result = cursor.fetchall()
        for row in result:
            print(row)
finally:
    conn.close()

更新数据

更新数据是将数据库中的现有数据替换为新数据的一种方法。使用pymysql库可以使用以下示例代码更新数据库中的数据:

import pymysql

conn = pymysql.connect(
    host='localhost', 
    user='root', 
    password='123456', 
    database='test', 
    charset='utf8mb4'
)

try:
    with conn.cursor() as cursor:
        sql = "UPDATE `users` SET `age`=%s WHERE `name`=%s"
        cursor.execute(sql, (25, 'Tom'))
    conn.commit()
except:
    conn.rollback()
finally:
    conn.close()

删除数据

删除数据是从数据库中删除现有数据的一种方法。使用pymysql库可以使用以下示例代码删除数据库中的数据:

import pymysql

conn = pymysql.connect(
    host='localhost', 
    user='root', 
    password='123456', 
    database='test', 
    charset='utf8mb4'
)

try:
    with conn.cursor() as cursor:
        sql = "DELETE FROM `users` WHERE `name`=%s"
        cursor.execute(sql, ('Tom',))
    conn.commit()
except:
    conn.rollback()
finally:
    conn.close()

使用事务

事务是一组可以一起执行或回滚的SQL语句。使用事务时,需要提交或回滚事务。以下是pymysql库使用事务的示例代码:

import pymysql

conn = pymysql.connect(
    host='localhost', 
    user='root', 
    password='123456', 
    database='test', 
    charset='utf8mb4'
)

try:
    with conn.cursor() as cursor:
        # 开始事务
        conn.begin()
        sql1 = "UPDATE `users` SET `age`=%s WHERE `name`=%s"
        cursor.execute(sql1, (25, 'Tom'))
        sql2 = "UPDATE `users` SET `age`=%s WHERE `name`=%s"
        cursor.execute(sql2, (28, 'Jerry'))
        # 提交事务
        conn.commit()
except:
    # 回滚事务
    conn.rollback()
finally:
    conn.close()

关闭数据库连接

在完成操作后,需要关闭MySQL数据库连接。以下是使用pymysql库关闭MySQL数据库连接的示例代码:

import pymysql

conn = pymysql.connect(
    host='localhost', 
    user='root', 
    password='123456', 
    database='test', 
    charset='utf8mb4'
)

try:
    with conn.cursor() as cursor:
        sql = "SELECT * FROM `users`"
        cursor.execute(sql)
        result = cursor.fetchall()
        for row in result:
            print(row)
finally:
    # 关闭MySQL数据库连接
    conn.close()

SQLAlchemy

SQLAlchemy是另一个流行的Python数据库操作库,它支持多种数据库引擎,包括MySQL、PostgreSQL、SQLite等。下面将分别介绍连接数据库、数据库操作和关闭数据库连接等核心知识。

安装SQLAlchemy

在Python环境中使用SQLAlchemy进行MySQL数据库操作,需要先安装SQLAlchemy模块。如果你使用的是Anaconda或Miniconda,可以通过以下命令进行安装:

conda install sqlalchemy

如果你使用pip来管理Python的包,可以通过以下命令进行安装:

pip install sqlalchemy

连接数据库

使用SQLAlchemy连接MySQL数据库,需要指定MySQL连接用的URL,URL的格式如下:

dialect+driver://username:password@host:port/database

下面是使用SQLAlchemy连接MySQL数据库的示例代码:

from sqlalchemy import create_engine

engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')

数据库操作

连接到MySQL数据库后,我们接下来就可以进行数据的增删改查操作。下面将分别介绍如何进行增删改查,以及如何提交、回滚和关闭事务的操作。

插入数据

使用SQLAlchemy插入数据是向数据库中添加新数据的一种方法。使用SQLAlchemy可以使用以下示例代码向数据库中插入一条数据:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String(20))
    age = Column(Integer)

Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

try:
    user = User(id=1, name='Tom', age=20)
    session.add(user)
    session.commit()
except:
    session.rollback()
finally:
    session.close()

查询数据

查询数据是从数据库中检索数据的一种方法。使用SQLAlchemy可以使用以下示例代码从数据库中查询数据:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String(20))
    age = Column(Integer)

Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

try:
    users = session.query(User).all()
    for user in users:
        print(user.id, user.name, user.age)
finally:
    session.close()

更新数据

更新数据是将数据库中的现有数据替换为新数据的一种方法。使用SQLAlchemy可以使用以下示例代码更新数据库中的数据:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String(20))
    age = Column(Integer)

Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

try:
    user = session.query(User).filter(User.name == 'Tom').first()
    user.age = 25
    session.commit()
except:
    session.rollback()
finally:
    session.close()

删除数据

删除数据是从数据库中删除现有数据的一种方法。使用SQLAlchemy可以使用以下示例代码删除数据库中的数据:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String(20))
    age = Column(Integer)

Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

try:
    user = session.query(User).filter(User.name == 'Tom').first()
    session.delete(user)
    session.commit()
except:
    session.rollback()
finally:
    session.close()

使用事务

使用SQLAlchemy进行事务操作,首先需要开始一个事务,然后执行一系列的数据库操作,然后再提交事务或回滚事务。以下是使用SQLAlchemy的示例代码:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String(20))
    age = Column(Integer)

Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

try:
    session.begin()
    user1 = User(id=1, name='Tom', age=20)
    session.add(user1)
    user2 = User(id=2, name='Jerry', age=28)
    session.add(user2)
    session.commit()
except:
    session.rollback()
finally:
    session.close()

关闭数据库连接

在完成操作后,需要关闭MySQL数据库连接。以下是使用SQLAlchemy关闭MySQL数据库连接的示例代码:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String(20))
    age = Column(Integer)

Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

try:
    users = session.query(User).all()
    for user in users:
        print(user.id, user.name, user.age)
finally:
    # 关闭MySQL数据库连接
    session.close()

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python数据库操作mysql:pymysql、sqlalchemy常见用法详解 - Python技术站

(0)
上一篇 2023年6月5日
下一篇 2023年6月5日

相关文章

  • Python中最强大的错误重试库(tenacity库)

    Python中最强大的错误重试库:tenacity tenacity是一个Python的错误重试库,它允许用户定义一个函数执行的重试策略,并能在函数发生可选的异常时进行重试。 使用这个库,我们可以很方便地实现对于有一定耐受性的异常的重试,比如网络连接失败,或是远程API问题等。 安装 tenacity的安装非常简单,只需在命令行中输入以下命令即可: pip …

    python 2023年6月2日
    00
  • Python requests设置代理的方法步骤

    以下是关于Python requests设置代理的方法步骤的攻略: Python requests设置代理的方法步骤 在进行网络爬虫开发时,经常需要使用代理来访问目标网站。Python的requests库提供了设置代理的功能,可以轻松实现。以下是Python requests设置代理的方法步骤的攻略。 使用proxies参数设置代理 使用proxies参数可…

    python 2023年5月14日
    00
  • python获得两个数组交集、并集、差集的方法

    在Python中,可以使用set集合来实现两个数组的交集、并集、差集等操作。下面是详细的讲解和示例说明。 两个数组的交集 可以使用set集合的intersection()方法来获取两个数组的交集。该方法会返回一个新的set集合,包含两个数组中共同的元素。下面是一个示例: # 定义两个数组 arr1 = [1, 2, 3, 4, 5] arr2 = [3, 4…

    python 2023年5月13日
    00
  • 如何使用Python实现数据库中数据的分组统计?

    以下是使用Python实现数据库中数据的分组统计的完整攻略。 数据库中数据的分组统计简介 在数据库中,数据的分组统计是指将数据按照某个字段进行分组,并每个分进行统计。在Python中可以使用pymysql库实现数据库中数据的分组统计。 步骤1:连接到数据库 在Python中,使用pym库连接到MySQL数据库。以下是连接到MySQL数据库的基本语法: imp…

    python 2023年5月12日
    00
  • Python 列表约定列表

    【问题标题】:Python list of lists conventionPython 列表约定列表 【发布时间】:2023-04-03 16:17:01 【问题描述】: 我有一个类似下面的列表(y)。现在,我想做的是删除对象[n,m]。如果n 匹配某个值。我因此思考列表列表(m 将在运行时多次更改,而n 是静态的)是否是解决此问题的方法?如果有更清洁的方…

    Python开发 2023年4月8日
    00
  • 详解Python对JSON中的特殊类型进行Encoder

    让我来详细讲解一下“详解Python对JSON中的特殊类型进行Encoder”的完整攻略。 什么是JSON JSON是一个轻量级的数据交换格式,它基于JavaScript语言的一个子集。JSON由“名/值”对组成(键值对),并使用大括号表示对象,中括号表示数组。JSON的设计目标是易于读取和编写,同时也易于机器解析和生成。 为什么需要对JSON中的特殊类型进…

    python 2023年5月20日
    00
  • python定时任务schedule库用法详细讲解

    下面是详细讲解“python定时任务schedule库用法详细讲解”的攻略: 1. 简介 Python的schedule库是一种定时任务库,可以让我们方便地在Python中执行周期性的任务。它可以替代Python自带的time.sleep()方法,因为它不会阻塞主线程。 2. 安装 在使用之前,需要安装schedule库。可以使用pip命令安装: pip i…

    python 2023年5月18日
    00
  • 使用虚拟环境实现Python版本和依赖库的兼容

    使用虚拟环境可以帮助我们在同一台机器上维护多个Python版本和依赖库,避免不同项目之间的版本冲突。下面是一个完整的攻略: 安装虚拟环境模块 虚拟环境模块可以使用Python自带的venv或第三方模块virtualenv。一般情况下,我们推荐使用venv,因为它已经成为Python标准库的一部分。 安装venv模块 venv模块可以在Python 3.3以上…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部