1.pymysql创建数据库连接

基础版

from pymysql import Connection

# 创建数据库连接
con = Connection(
host='localhost',# 主机名
port=3306, # 端口
user='root', # 账户
password='123456', # 密码
) print(type(con))
print(con.get_host_info())
print(con.get_server_info()) #关闭连接
con.close()

加上异常处理的小改进

在user那里添加了个错误,看看效果

from pymysql import Connection
con = None
try:
# 创建数据库连接
con = Connection(
host='localhost',
port=3306,
user='root2',
password='200647',
)
print(type(con))
print(con.get_host_info())
print(con.get_server_info())
except Exception as e:
print("异常:",e)
finally:
if con:
#关闭连接
con.close()

正常写法

from pymysql import Connection
con = None
try:
# 创建数据库连接
con = Connection(
host='localhost',
port=3306,
user='root',
password='200647',
)
print(type(con))
print(con.get_host_info())
print(con.get_server_info())
except Exception as e:
print("异常:",e)
finally:
if con:
#关闭连接
con.close()

2.pymysql执行DDL语句

DDL (Data Definition Language):​​ 操作数据库结构/模式​ (CREATE, ALTER, DROP, TRUNCATE, RENAME)。处理对象定义。

在此之前,我们提前新建一个名为db_python的数据库,后面要用

from pymysql import Connection
con = None
try:
# 创建数据库连接
con = Connection(
host='localhost',
port=3306,
user='root',
password='200647',
)
# 创建游标对象
cursor = con.cursor() # 定义一个建表sql语句:
sql = """
CREATE TABLE `t_student`(
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
""" # 选择要操作的数据库
con.select_db('db_python') # 使用游标对象,执行sql
cursor.execute(sql)
cursor.close()
except Exception as e:
print("异常:",e)
finally:
if con:
#关闭连接
con.close()

执行之后在Navicat等软件查看数据库情况

看见已经创建成功了

我们再来执行一条sql语句

from pymysql import Connection
con = None
try:
# 创建数据库连接
con = Connection(
host='localhost',
port=3306,
user='root',
password='200647',
database='db_python',#指定操作数据库
)
# 创建游标对象
cursor = con.cursor() # 定义一个建表sql语句:
sql = """
ALTER TABLE t_student ADD COLUMN sex varchar(1)
""" # 使用游标对象,执行sql
cursor.execute(sql)
cursor.close()
except Exception as e:
print("异常:",e)
finally:
if con:
#关闭连接
con.close()



可以看见执行成功了

3.pymysql 执行DML语句

DML (Data Manipulation Language):​​ 操作表中的数据行​ (INSERT, UPDATE, DELETE)。处理实际数据内容。

提前写入几个数据

from pymysql import Connection
con = None
try:
# 创建数据库连接
con = Connection(
host='localhost',
port=3306,
user='root',
password='200647',
database='db_python',#指定操作数据库
)
# 创建游标对象
cursor = con.cursor() # 使用游标对象,执行sql
cursor.execute("select * from t_student") # 获取查询结果
result = cursor.fetchall()
print(type(result),result)
for row in result:
print(row) cursor.close()
except Exception as e:
print("异常:",e)
finally:
if con:
#关闭连接
con.close()

4.pymysql 执行 insert 操作

from pymysql import Connection
con = None
try:
# 创建数据库连接
con = Connection(
host='localhost',
port=3306,
user='root',
password='200647',
database='db_python',#指定操作数据库
)
# 创建游标对象
cursor = con.cursor() # 使用游标对象,执行sql
cursor.execute("insert into t_student values (3,'王五',28,'M') ") # 确认提交
con.commit() cursor.close()
except Exception as e:
print("异常:",e)
finally:
if con:
#关闭连接
con.close()
  • 插入王五这一数据

    我们可以设置auto_commit=True来自动提交
from pymysql import Connection
con = None
try:
# 创建数据库连接
con = Connection(
host='localhost',
port=3306,
user='root',
password='200647',
database='db_python',#指定操作数据库
autocommit=True
)
# 创建游标对象
cursor = con.cursor() # 使用游标对象,执行sql
cursor.execute("insert into t_student values (4,'赵六',99,'F') ") cursor.close()
except Exception as e:
print("异常:",e)
finally:
if con:
#关闭连接
con.close()

  • 打印插入的主键id
print("主键id=",con.insert_id())

此外的update和delete也是一样的,没区别,只要学过sql语句就可以套

pymysql入门的更多相关文章

  1. [学习笔记] pymysql入门

    一.快速开始 对于会用MySQL的朋友来说,开始使用pymysql可以说真的so esay,只要用下面的代码,把想要对数据库的操作放在 sql = " " 里就可以了. 没有接触过 ...

  2. python----python使用mysql

    Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymql pymsql是Python中操作MySQL的模块,在windows中的安装: pip ...

  3. 数据库入门-pymysql模块的使用

    一.pymysql模块安装 由于本人的Python版本为python3.7,所以用pymysql来连接数据库(mysqldb不支持python3.x) 方法一: #在cmd输入 pip3 instal ...

  4. 05 数据库入门学习-正则表达式、用户管理、pymysql模块

    一.正则表达式 正则表达式用于模糊查询,模糊查询已经讲过了 like 仅支持 % 和 _ 远没有正则表达式灵活当然绝大多数情况下 like足够使用 #语法 select *from table whe ...

  5. python爬虫入门七:pymysql库

    我们使用python爬取得到的数据,有时候会数据量特别大,需要存入数据库. 需要注意的是,MySQL是一种关系型数据库管理系统,利用MySQL可以对数据库进行操作,而MySQL并不是一个数据库. 而p ...

  6. python入门教程之二十三Python3 MySQL 数据库连接 - PyMySQL 驱动

    MySQL 是最流行的关系型数据库管理系统,如果你不熟悉 MySQL,可以阅读我们的 MySQL 教程. 本章节我们为大家介绍使用 mysql-connector 来连接使用 MySQL, mysql ...

  7. python scrapy 抓取脚本之家文章(scrapy 入门使用简介)

    老早之前就听说过python的scrapy.这是一个分布式爬虫的框架,可以让你轻松写出高性能的分布式异步爬虫.使用框架的最大好处当然就是不同重复造轮子了,因为有很多东西框架当中都有了,直接拿过来使用就 ...

  8. Python系列之入门篇——MYSQL

    Python系列之入门篇--MYSQL 简介 python提供了两种mysql api, 一是MySQL-python(不支持python3),二是PyMYSQL(支持python2和python3) ...

  9. 【Python入门只需20分钟】从安装到数据抓取、存储原来这么简单

    基于大众对Python的大肆吹捧和赞赏,作为一名Java从业人员,我本着批判与好奇的心态买了本python方面的书<毫无障碍学Python>.仅仅看了书前面一小部分的我......决定做一 ...

  10. 第一章:模型层model layer -- Django从入门到精通系列教程

    该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. 题外话: Django的教程写到这里,就进入 ...

随机推荐

  1. C# 基础问题汇集

    (1)new List并不是null,可以正常的被遍历和AddRange class Program { public static void Main() { //var t = new test( ...

  2. RocketMQ源码详解(消息存储、Consumer)

    消息存储 消息存储核心类 private final MessageStoreConfig messageStoreConfig; //消息配置属性 private final CommitLog c ...

  3. B1002 写出这个数 (20 分)

    描述 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 10 100 . 输出格式: 在 ...

  4. java常用包的介绍

    java.* java.lang    包含Java程序所需要的基本类(默认导入) java.util         包含丰富的常用工具类,如集合框架.事件模式.日期时间等 java.math   ...

  5. React-Native开发鸿蒙NEXT-一次审核闪退的排查思路

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  6. C#/.NET/.NET Core技术前沿周刊 | 第 40 期(2025年5.26-5.31)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  7. 在Linux下使用wxWidgets进行跨平台GUI开发

    在Linux下使用wxWidgets进行跨平台GUI开发 wxWidgets是一个功能强大的跨平台C++ GUI框架,支持Windows.Linux和macOS等多种平台.本文将详细介绍在Linux系 ...

  8. Java IO<5>管道流PipedOutputStream PipedInputStream

    在java中,PipedOutputStream和PipedInputStream分别是管道输出流和管道输入流.它们的作用是让多线程可以通过管道进行线程间的通讯.在使用管道通信时,必须将PipedOu ...

  9. innerHTML和value打架了?

    我在实现简单的前端判断验证码的过程中犯了一个低级的错误,这个错误是我平时注意的不多的地方,那就是没有区分清楚innerHTML和value的区别.... 现在我对这两者做出简单的区分: innerHT ...

  10. Golang解析yaml文件

    一.具体思路 将配置yaml文件内容解析为我们定义好的struct,这种比较简单,如果想获取对应的值,直接获取即可. 二.实现步骤 首先根据配置文件的内容定义一个结构体Config,结构体类型和yam ...