首页 > 数据库 >使用Python操作MySQL的多种方式

使用Python操作MySQL的多种方式

时间:2024-08-09 19:54:47浏览次数:11  
标签:多种 name Python 数据库 Django user MySQL age

目录

  1. MySQL简介
  2. 安装与配置
  3. 使用MySQL Connector/Python
  4. 使用SQLAlchemy
  5. 使用Django ORM
  6. 总结

MySQL简介

MySQL是一种开源的关系型数据库管理系统(RDBMS),广泛用于各种应用程序,特别是Web应用。它使用结构化查询语言(SQL)进行数据库管理和操作,具有高性能、高可靠性和易用性等特点。

安装与配置

在开始操作MySQL之前,需要确保在你的系统中已安装MySQL服务器和客户端工具。可以从MySQL官方网站下载并安装适用于你操作系统的版本。安装完成后,启动MySQL服务并创建一个用于测试的数据库。

sudo service mysql start
mysql -u root -p

在MySQL命令行中创建一个测试数据库:

CREATE DATABASE test_db;

使用MySQL Connector/Python

连接数据库

MySQL Connector/Python是MySQL官方提供的Python连接器,可以通过以下命令安装:

pip install mysql-connector-python

以下是一个连接到MySQL数据库的示例:

import mysql.connector

# 创建数据库连接
conn = mysql.connector.connect(
    host='localhost',
    user='root',
    password='your_password',
    database='test_db'
)

# 创建游标对象
cursor = conn.cursor()

print("数据库连接成功")

执行SQL语句

可以使用游标对象执行各种SQL语句,包括插入、查询、更新和删除。

# 创建表
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    age INT NOT NULL
)
""")

# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES (%s, %s)", ('Alice', 30))
cursor.execute("INSERT INTO users (name, age) VALUES (%s, %s)", ('Bob', 25))

# 提交事务
conn.commit()

处理查询结果

使用fetchall()fetchone()方法获取查询结果。

# 查询数据
cursor.execute("SELECT * FROM users")

# 获取所有结果
results = cursor.fetchall()

# 处理结果
for row in results:
    print(f"ID: {row[0]}, Name: {row[1]}, Age: {row[2]}")

事务管理

可以使用commit()rollback()方法进行事务管理。

try:
    # 开始事务
    conn.start_transaction()

    # 执行插入操作
    cursor.execute("INSERT INTO users (name, age) VALUES (%s, %s)", ('Charlie', 35))

    # 提交事务
    conn.commit()

except mysql.connector.Error as err:
    # 回滚事务
    conn.rollback()
    print(f"Error: {err}")

使用SQLAlchemy

安装SQLAlchemy

SQLAlchemy是一个功能强大的Python SQL工具包和对象关系映射(ORM)库。可以通过以下命令安装:

pip install sqlalchemy

连接数据库

使用SQLAlchemy连接MySQL数据库。

from sqlalchemy import create_engine

# 创建数据库引擎
engine = create_engine('mysql+mysqlconnector://root:your_password@localhost/test_db')

print("数据库连接成功")

定义模型

使用SQLAlchemy定义数据模型。

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String

# 创建基类
Base = declarative_base()

# 定义User模型
class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(255), nullable=False)
    age = Column(Integer, nullable=False)

# 创建表
Base.metadata.create_all(engine)

执行查询

使用SQLAlchemy执行查询。

from sqlalchemy.orm import sessionmaker

# 创建会话
Session = sessionmaker(bind=engine)
session = Session()

# 插入数据
new_user = User(name='Alice', age=30)
session.add(new_user)
session.commit()

# 查询数据
users = session.query(User).all()

for user in users:
    print(f"ID: {user.id}, Name: {user.name}, Age: {user.age}")

事务管理

SQLAlchemy会自动管理事务,但你也可以手动控制事务。

try:
    # 开始事务
    session.begin()

    # 执行插入操作
    new_user = User(name='Charlie', age=35)
    session.add(new_user)

    # 提交事务
    session.commit()

except:
    # 回滚事务
    session.rollback()
    raise

使用Django ORM

安装Django

Django是一个高级Python Web框架,内置了强大的ORM。可以通过以下命令安装:

pip install django

配置数据库

在Django项目的settings.py文件中配置MySQL数据库。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test_db',
        'USER': 'root',
        'PASSWORD': 'your_password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

定义模型

在Django应用的models.py文件中定义数据模型。

from django.db import models

class User(models.Model):
    name = models.CharField(max_length=255)
    age = models.IntegerField()

    def __str__(self):
        return self.name

执行查询

使用Django ORM执行查询。

# 创建数据
user = User(name='Alice', age=30)
user.save()

# 查询数据
users = User.objects.all()

for user in users:
    print(f"ID: {user.id}, Name: {user.name}, Age: {user.age}")

事务管理

Django ORM也支持事务管理,可以使用transaction模块。

from django.db import transaction

try:
    with transaction.atomic():
        # 执行插入操作
        user = User(name='Charlie', age=35)
        user.save()

except Exception as e:
    print(f"Error: {e}")

总结

本文详细介绍了使用Python操作MySQL的多种方式,包括MySQL Connector/Python、SQLAlchemy和Django ORM。每种方式都有其独特的优点和适用场景,开发者可以根据具体需求选择合适的工具。希望本文能够帮助读者全面了解和掌握Python操作MySQL的技巧和方法,提高开发效率。

标签:多种,name,Python,数据库,Django,user,MySQL,age
From: https://blog.csdn.net/fudaihb/article/details/141018739

相关文章

  • Python和AI库NumPy(三):数组形状与变换
    目录1.数组的基础形状操作1.1查看数组的形状1.2改变数组的形状2.数组的转置与轴交换2.1数组的转置2.2交换数组的轴3.数组的合并与分割3.1数组的水平与垂直合并3.2数组的分割4.高级数组变换技巧4.1广播机制(Broadcasting)4.2使用expand_dims()和squeeze()......
  • 如何在 Windows 10 环境下安装和配置 MySQL:初学者指南
    如何在Windows10环境下安装和配置MySQL:初学者指南MySQL是一个流行的开源数据库管理系统,广泛应用于各种应用程序中。对于初学者来说,了解如何在Windows10环境下安装和配置MySQL是一个重要的第一步。本篇博客将详细介绍如何完成这些步骤,确保你能顺利地启动和使用MySQL......
  • 猫头虎 分享:Python库 Tornado 的简介、安装、用法详解入门教程
    ......
  • 猫头虎分享:Python库 FastAPI 的简介、安装、用法详解入门教程
    ......
  • python-约瑟夫环(赛氪OJ)
    [题目描述]n 个人( 0,1,2,3,4...n−1 ),围成一圈,从编号为 k 的人开始报数,报数报到 m 的人出队。下次从出队的人之后开始重新报数,循环往复,当队伍中只剩最后一个人的时候,那个人就是大王。现在,给定 n ,k ,m 。请你求出大王的编号。输入格式:输入一行包含三个整数 n , ......
  • 20240809-python实现TCP通信
    python实现TCP通讯1.0版本(备份)importsocketfromlogUtilsimportlogfromapiimportApidefhandle_client(client_socket,addr):log.info(f"客户端的ip地址和端口号:{addr}")try:whileTrue:#接收客户端发送的数据,这次接收数据的......
  • 泛微E-office 10 schema_mysql接口敏感信息泄露漏洞复现 [附POC]
    文章目录泛微E-office10schema_mysql接口敏感信息泄露漏洞复现[附POC]0x01前言0x02漏洞描述0x03影响版本0x04漏洞环境0x05漏洞复现1.访问漏洞环境2.构造POC3.复现泛微E-office10schema_mysql接口敏感信息泄露漏洞复现[附POC]0x01前言......
  • Python-和-PowerShell-协作教程-全-
    Python和PowerShell协作教程(全)原文:PowerShellandPythonTogether协议:CCBY-NC-SA4.0一、面向调查人员的PowerShell简介PowerShell提供了一个强大的获取引擎,可以从实时系统、服务器、外围设备、移动设备和数据驱动的应用程序(如ActiveDirectory)中获取大量信息。......
  • Blender-Python-API-教程-全-
    BlenderPythonAPI教程(全)原文:TheBlenderPythonAPI协议:CCBY-NC-SA4.0一、Blender界面本章讨论并定义Blender界面的组件。它作为我们在整个文本中讨论界面时使用的词汇的参考。我们将关注Python开发中最常用的接口组件,并为高效的Python脚本设置自定义接口。为......
  • 创造你自己的-Python-文本冒险-全-
    创造你自己的Python文本冒险(全)原文:MakeYourOwnPythonTextAdventure协议:CCBY-NC-SA4.0一、入门指南介绍你可能听过互联网上的口号,“学会编码!学会编码!”,并且您已经了解到Python是一个很好的起点…但是现在该怎么办呢?很多想编程的人不知道从何下手。你可以用代码创......