pymysql 入门及填坑

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: pymysql 入门及填坑

pymysql 入门及填坑


1、安装 pymysql

1. pip install pymysql
2. # 或
3. python3 -m pip install PyMySQL

2、官网例子

1)建表

CREATE TABLE `users` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `email` varchar(255) COLLATE utf8_bin NOT NULL,
    `password` varchar(255) COLLATE utf8_bin NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
AUTO_INCREMENT=1 ;

注意:一定要有一个自增的字段,此处为 ‘id’

2)建立连接

import pymysql.cursors
# Connect to the database
connection = pymysql.connect(host='localhost',
                             user='user',
                             password='passwd',
                             db='db',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)
try:
    with connection.cursor() as cursor:
        # Create a new record
        sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
        cursor.execute(sql, ('webmaster@python.org', 'very-secret'))
    # connection is not autocommit by default. So you must commit to save
    # your changes.
    connection.commit()
    with connection.cursor() as cursor:
        # Read a single record
        sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
        cursor.execute(sql, ('webmaster@python.org',))
        result = cursor.fetchone()
        print(result)
finally:
    connection.close()

输出结果:

{'password': 'very-secret', 'id': 1}

3)注意

%s 是占位符,可以代替所有类型的字段的占位,也可以使用对应类型进行占位,如:

insert_sql = "INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, SALARY) VALUES (%s, %s, %s, %s, %s)"    # 注意不是'%s',而是%s
args_list = [('Mei', 'Han', 20, 'F', 3000.00), ('Obama', 'Qiao', 57, 'M', 2348.01), ('Jim', 'Cluse', 35, 'F', 2231.01), ('Macer', 'Jordan', 45, 'M', 2340.10)]
// 原文链接:https://www.cnblogs.com/smartsmile-yxh/p/11988644.html

或者:

sql = "INSERT INTO EMPLOYEE(FIRST_NAME, 
   LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('%s', '%s', '%d', '%c', '%d' )" % 
   ('Max', 'Su', 25, 'F', 2800)
//原文出自【易百教程】,商业转载请联系作者获得授权,非商业请保留原文链接:https://www.yiibai.com/python/python_database_access.html


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
打印全部异常堆栈、ExceptionUtils.getFullStackTrace这样最快
打印全部异常堆栈、ExceptionUtils.getFullStackTrace这样最快
587 0
|
tengine 弹性计算 网络安全
[原创]有关tengine几个超时时间说明
负载均衡的客户和技术支持同学经常问: 7层 HTTP Keepalive 超时时间 是15秒 和http 60S 这个超时时间有什么区别? 下边列出来具体的含义 ####1. keepalive_timeout 15s; 长连接中连续两个http/https请求之间空闲的最大时间,超过
4144 0
|
Unix 应用服务中间件 Linux
1-Nginx介绍及安装(源码安装)
1-Nginx介绍及安装(源码安装)
287 4
|
SQL Java Serverless
实时计算 Flink版操作报错合集之在写入SLS(Serverless Log Service)时出现报错,该如何排查
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
存储 安全 Linux
深入理解 Linux 用户和用户组的基本概念 + 相关命令 (一篇就够)
深入理解 Linux 用户和用户组的基本概念 + 相关命令 (一篇就够)
594 2
|
负载均衡 前端开发 应用服务中间件
Nginx安装与使用
Nginx安装与使用
464 0
|
人工智能 编解码 算法
Stable Diffusion超详细教程!从0-1入门到进阶
本文提供了Stable Diffusion AI绘画工具的超详细入门到进阶教程,包括本地部署、界面基础、模型选择、ControlNet安装与使用,以及如何通过不断学习和调试提升使用效果。
Stable Diffusion超详细教程!从0-1入门到进阶
|
SQL 存储 分布式计算
❤️Hive的基本知识(一)❤️
❤️Hive的基本知识(一)❤️
176 0
|
存储 JSON API
Transformers 4.37 中文文档(十一)(1)
Transformers 4.37 中文文档(十一)
371 1
stm32f407探索者开发板(八)——按键输入实验--GPIO做输入
stm32f407探索者开发板(八)——按键输入实验--GPIO做输入
258 0