【Python】python进阶篇之数据库操作

数据库操作

pip3安装mysql依赖

pip3 list|grep mysql

在这里插入图片描述

pip3 install mysql-connector-python
#指定版本
pip3 install mysql-connector-python==版本号
#升降版本
pip3 install --upgrade mysql-connector-python==版本号

在这里插入图片描述

原生SQL操作

操作mysql可以使用pymsql或mysql-connector-python等

  1. 数据库驱动类型: pymysql是纯Python实现的MySQL客户端库,而mysql-connector-python是MySQL官方提供的官方驱动程序,是用C实现的。
  2. 兼容性和特性: mysql-connector-python官方驱动程序对MySQL数据库的兼容性更好,并支持一些高级特性,如事务、数据库迁移工具等。而pymysql在兼容性方面也很好,但可能会有一些限制,特别是在某些特定的高级功能方面。
  3. 性能: 由于pymysql是纯Python实现,相对而言,在某些情况下可能会比mysql-connector-python慢一些。mysql-connector-python通过底层C实现,可以提供更高的性能。
  4. 使用和API风格: pymysql提供了类似于Python的DB API 2.0的接口风格,而mysql-connector-python使用了更现代化和Pythonic的API设计。API的使用和风格可能会略有不同,根据个人偏好和习惯来选择。
开发代码流程

1:连接数据库

2:创建游标对象

3:对数据进行增删改查

4:关闭游标、关闭连接

增删改查实现
insert、select
import traceback

import mysql.connector
from SnowFlake import Snowflake
import datetime


# 建立连接
def connectMySQL():
    try:
        connect = mysql.connector.connect(host="localhost",
                                          port=3306,
                                          user="xxxx",
                                          password='xxxx',
                                          database="xxxx",
                                          autocommit=False)
        print("mysql连接成功")
        return connect
    except mysql.connector.Error as err:
        print(f"数据库连接失败:{err}")


# insert
def insertData(connect, cursor, insertSQL, data):
    try:
        # 开启事务
        connect.start_transaction()
        # 执行sql
        cursor.execute(insertSQL, data)
        # 提交事务
        connect.commit()
    except mysql.connector.Error as err:
        connect.rollback()
        # 打印堆栈信息
        traceback.print_exc()
        print(f"发生错误,事务回滚:{err}")


# 查询数据
def selectData(cursor, sql, param=None):
    print("查询数据参数:", param)
    if param is None:
        cursor.execute(sql)
    else:
        cursor.execute(sql, param)
    rows = cursor.fetchall()
    for row in rows:
        print("bizCode: {}, Name: {}, Age: {},createdTime:{}".format(row[0], row[1], row[2],
                                                                     row[3].strftime("%Y-%m-%d %H:%M:%S")))
    return rows


if __name__ == '__main__':
    # 创建数据库连接
    connect = connectMySQL()
    # 创建游标对象
    cursor = connect.cursor()

    # 插入数据
    insertSQL = "insert into t_cust_user (biz_code,user_name,user_age,created_time,yn) value " \
                "(%s,%s,%s,%s,%s)"

    # 插入数据
    bizCode = str(Snowflake(worker_id=0, datacenter_id=0).generate_id())
    userName = "杜甫"
    userAge = "99"
    yn = 1
    createdTime = datetime.datetime.now()
    data = (bizCode, userName, userAge, createdTime, yn)
    insertData(connect, cursor, insertSQL, data)

    # 查询数据
    selectData(cursor, "select biz_code,user_name,user_age,created_time from t_cust_user")
    param = (2,)
    selectData(cursor, "select biz_code,user_name,user_age,created_time from t_cust_user where id=%s"
               , param)

    # 关闭游标和连接
    cursor.close()
    connect.close()

碰到的问题:

mysql.connector.errors.ProgrammingError: Not all parameters were used in the SQL statement

因为无论是数字(包括整数和浮点数)、字符串、日期时间或其他任意类型,都应该使用%s占位符。

orm第三方框架

内容来源于AI

在Python中,有许多第三方ORM(对象关系映射)框架可供选择,用于简化数据库操作和数据模型管理。以下是几个常用的Python第三方ORM框架的简要比较:

  1. SQLAlchemy: SQLAlchemy 是一个功能强大的ORM框架,支持多种数据库后端。它提供了高级的查询语言和灵活的对象关系映射功能。SQLAlchemy支持多种数据模型的定义方式,包括基于类的声明式方式和基于表的方式。它还提供了事务支持、连接池管理、复杂查询构建等功能。
  2. Django ORM: Django是一个流行的Web开发框架,其中包含了自带的ORM工具。Django ORM提供了简单易用的API,支持常见的数据库操作和查询。它使用类似于Active Record模式的数据模型定义方式,能够快速地进行数据库操作和关联查询。Django ORM还提供了数据库迁移、事务管理、缓存等功能,与Django框架无缝集成。
  3. Peewee: Peewee是一个轻量级的ORM框架,设计简单且易于使用。它提供了类似于Django ORM的API,支持多种数据库后端。Peewee具有简洁的模型定义语法和灵活的查询构建方式。它还提供了事务支持、连接池管理、模型迁移等功能,适合小型项目或对ORM需求相对简单的应用。
  4. Pony ORM: Pony ORM是一个简单但功能强大的ORM框架,支持多种数据库后端。它提供了类似于SQLAlchemy的查询构建方式,使用Python原生的生成器和表达式语法。Pony ORM具有自动连接管理、延迟加载、事务支持等特性。它还支持高级查询功能,如查询表达式、关联查询、子查询等。

这些是其中一些常见的Python第三方ORM框架,每个框架都有其独特的特点和适用场景。选择合适的ORM框架取决于项目需求、开发经验和个人偏好。建议在选择之前仔细研究和评估每个框架的文档、功能、性能以及社区支持等因素。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值