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中字符串数组逆序排列方法总结

    Python中字符串数组逆序排列方法总结 在Python中,我们经常需要对一个字符串数组进行逆序排列操作。本文将针对这个问题进行详细的讲解和总结。 方法一:使用reverse() 在Python中,我们可以使用列表的reverse()方法将字符串数组进行逆序排列。具体实现过程如下: str_list = ["hello", "w…

    python 2023年6月5日
    00
  • 详解python的sorted函数对字典按key排序和按value排序

    下面是对“详解python的sorted函数对字典按key排序和按value排序”的完整攻略,主要分为以下几个部分: sorted函数的介绍 对字典按key排序 对字典按value排序 示范代码演示 1. sorted函数的介绍 sorted函数是Python内置的排序函数,它可以对序列、集合和字典等可迭代类型进行排序。sorted函数默认按照升序排序,如果…

    python 2023年5月13日
    00
  • php正则表达式使用的详细介绍

    以下是“PHP正则表达式使用的详细介绍”的完整攻略: 一、问题描述 正则表达式是一种强大的文本匹配工具,可以用于在PHP中查找、替换和验证字符串。本文将详细介绍PHP中正则表达式的使用方法。 二、解决方案 2.1 正则表达式的基本语法 在PHP中,我们可以使用preg_match()、preg_replace()和preg_match_all()等函数来处理…

    python 2023年5月14日
    00
  • python实现求解列表中元素的排列和组合问题

    在Python中,可以使用itertools模块来求解列表中元素的排列和组合问题。itertools模块提供了一些用于迭代器操作的函数,包括排列、组合、笛卡尔积等。下面是一个详细的攻略,介绍如何使用itertools模块来求解列表中元素的排列和组合问题。 排列问题 排列问题指从一个列表中选一定数量的元素,按照一定的顺序排列,形成一个新的列表。可以使用perm…

    python 2023年5月13日
    00
  • python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结

    标题:Python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结 正文: 在Python3中,对于图像的处理,常见的是读取图片并进行灰度化。本文总结了四种常用的方法,包括OpenCV、PIL.Image、Tensorflow方法。下面我们来逐一介绍这四种方法。 OpenCV方法 OpenCV是计算机视觉方面…

    python 2023年5月18日
    00
  • Python3 pip3 list 出现 DEPRECATION 警告的解决方法

    当我们在 Python3 环境下使用 pip3 list 命令查询安装的包时,有时会出现以下的警告信息: DEPRECATION: Python 3.4 support has been deprecated. pip 19.1 will be the last one supporting it. Please upgrade your Python as…

    python 2023年5月14日
    00
  • python实现跨excel的工作表sheet之间的复制方法

    下面我将为你详细讲解如何使用Python实现跨Excel工作表sheet之间的复制方法,内容包含如下几个部分: 前置条件和准备工作 跨sheet复制方法的实现步骤 示例说明1:在同一Excel文件内复制不同sheet中的数据 示例说明2:跨不同Excel文件复制数据 1. 前置条件和准备工作 在进行跨Excel工作表sheet之间的复制操作前,我们需要安装P…

    python 2023年5月14日
    00
  • Python sorted()数据排序

    Python中的sorted()函数可以对序列类型的数据进行排序操作,它可以对包括列表(list)、元组(tuple)、字典(dict)、集合(set)等多种数据类型进行排序。下面我将详细讲解如何使用sorted()函数进行数据排序。 一、sorted()函数的基础使用 sorted()函数的基础用法如下: sorted(iterable, key=None…

    python-answer 2023年3月25日
    00
合作推广
合作推广
分享本页
返回顶部