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

yizhihongxing

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函数print用法

    详解Python函数print用法 在Python中,print函数是一个用来将信息输出到控制台或是文件的基本函数。它可以将一个或多个对象以指定的格式输出到控制台,方便开发人员进行代码调试和程序运行状态的监控。 基本语法 下面是print函数的基本语法: print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout, …

    python 2023年6月3日
    00
  • python Requsets下载开源网站的代码(带索引 数据)

    以下是关于“Python Requests 下载开源网站的代码(带索引数据)”的完整攻略: Python Requests 下载开源网站的代码(带索引数据) 在 Python 中,我们可以使用 requests 模块下载开源网站的代码。requests 模块支持 HTTP 和 HTTPS 请求。以下是 Python Requests 下载开源网站的代码(带索…

    python 2023年5月15日
    00
  • python 基础教程之Map使用方法

    Python 基础教程之 Map 使用方法 Map 是 Python 中的一个函数,其主要功能是对序列中的每个元素执行相同的函数操作,将结果组成新的序列返回。 Map函数的语法 map(function, iterable, …) function: 一个函数,该函数将应用于每个项目,可以是 Python 内置的函数,也可以是开发者自定义的函数。 ite…

    python 2023年6月3日
    00
  • Python实现搜索算法的实例代码

    Python实现搜索算法的完整攻略 搜索算法是计算机科学中的基本算法之一,它的主要目的是在一组数据中查找特定的元素。在Python中,可以使用简单的代码实现常用的搜索算法。本文将详细讲解Python实现搜索算法的过程,并提供两个示例说明。 线性搜索 线性搜索是一种简单的搜索算法,它的基本思想是从一组数据的第一个元素开始,依次比较每个元素,直到找到目标元素或搜…

    python 2023年5月13日
    00
  • python实现马耳可夫链算法实例分析

    首先,我们需要了解马尔可夫链算法: 马尔可夫链是一种随机过程,表现为在一系列状态之间进行随机转移。在马尔可夫链中,下一次状态只与当前状态有关,不受之前历史状态的影响。马尔可夫链被广泛应用于自然语言处理、信号处理、图像处理、金融市场、天气预测等领域。 在Python中实现马尔可夫链算法的主要步骤如下: 1.收集数据并预处理:收集需要构建马尔可夫链的数据,并进行…

    python 2023年6月3日
    00
  • python中的list字符串元素排序

    以下是“Python中的list字符串元素排序”的完整攻略。 1. 使用sort()方法 sort()方法可以对列表进行排序,可以使用该方法对字符串元素进行排序例如下: my_list = [‘apple’, ‘banana’, ‘cherry’, ‘date’] my_list.sort() print(my_list) 在上面的示例代码中,我们首先定义了…

    python 2023年5月13日
    00
  • 详解Python PIL的GaussianBlur()方法

    Python PIL(Python Imaging Library)是一种用于图像处理的Python库,其中提供的GaussianBlur()方法可以用于对图像进行高斯模糊处理。以下是关于Python PIL的GaussianBlur()方法的完整攻略: 1. 导入PIL库 在使用GaussianBlur()方法之前,需要先导入PIL库,并安装合适的版本。在…

    python-answer 2023年3月25日
    00
  • Python解析xml中dom元素的方法

    在Python中,可以使用xml.dom.minidom模块解析XML文件中的DOM元素。以下是Python解析XML中DOM元素的方法的详细攻略: 加载XML文件 要解析XML文件,需要先加载XML文件。以下是加载XML文件的示例: import xml.dom.minidom dom = xml.dom.minidom.parse(‘example.xm…

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