python链接数据库(入门)

一、环境(安装略)

mysql数据库、navicat12(也可以是其他版本)数据库管理工具

python3.X、pycharm开发环境

pymysql包:用于链接数据库

二、使用python执行sql语句

import pymysql

# 连接数据库
db = pymysql.connect(host='localhost', user='root', password='123456', port=3306)
# 创建数据库的游标对象
cursor = db.cursor()
# execute()方法并执行 SQL 语句
cursor.execute("select version()")

1、导入库:pymysql

2、连接数据库pymysql的connect()方法:链接数据库,返回一个数据库对象

数据库对象名 = pymysql.connect(host='主机名(ip地址)', user='用户名', password='密码', port=接口(默认3306))    如下图

3、数据库对象的cursor()方法:创建一个游标对象(检索数据的指针)。

游标是什么?简而言之游标是python程序与数据库的中间产物,负责对数据库进行sql操作,并存储操作结果。

4、游标对象的execute()方法:输入一个字符串,执行字符串所代表的sql语句。 

三、数据库的增删改查

1、commit()方法与rollback()方法:

这两种方法都是数据库对象的方法

db.commit()  提交事务方法:只有提交事务,当前一次打开连接时对数据库的更改才能被实现。在增删改三类操作中,如果没有这个方法就无法实现对数据库的更改。

db.rollback() 回滚事务方法:将本次所有操作进行清空。

execute()方法进行的所有操作并没有直接作用于数据库,而是被“缓存”了起来。commit()方法是将缓存的操作保存,而rollback()方法则是将缓存的操作全部清空。直接关闭db.close()也会将本次所有缓存的操作清空。

类比使用word等办公文档的体验,可能更容易理解这个。如下:

import pymysql
# 连接到MySQL数据库
db = pymysql.connect("localhost", "root", "password", "database_name")
# 创建一个游标对象
cursor = db.cursor()

# 假设我们执行一个SQL命令,但由于某种原因,我们想要撤销更改
try:
    # 执行一个SQL命令,例如插入数据
    cursor.execute("INSERT INTO table_name (column1, column2) VALUES (%s, %s)", (value1, value2))
    # 提交更改到数据库
    db.commit()
except Exception as e:
    # 发生错误时回滚事务
    db.rollback()
    print(f"Error occurred: {e}")


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

2、数据库的增删改

数据的增删改都可以通过游标方法cursor.execute()实现

cursor.execute("sql语句")

db.commit()

1、可以直接将sql语句写入括号和双引号内。

2、也可以通过以下形式输入提前写好的sql语句

字符串1 = “sql语句”
 cursor.execute(字符串1)

3、也可以使用类似于C语言中的printf函数的方式(同样的也可以采用预编辑的字符串语句):

字符串2 = “sql操作语句2”
 cursor.execute(“sql操作语句1+%s”, 字符串2)

字符串1 = “sql操作语句1+%s”
字符串2 = “sql操作语句2”
 cursor.execute(字符串1, 字符串2)

3、数据库的查

增删改涉及对数据库数据的修改,查涉及数据库多条数据的读取。

1、“查”操作

cursor.execute("sql语句")

游标对象cursor可以对数据库进行查询并将查询结果进行存储进一个队列中。

2、cursor.fetchone()

该查询队列可以用cursor.fetchone() 方法依次读取。

cursor.fetchone() 方法是游标对象的一个方法,用于从当前数据库查询中获取下一行作为单独的元组。当你执行一个查询后,可以使用 cursor.fetchone() 方法来逐行地从查询结果中检索数据。

如下:

# 执行SQL查询
cursor.execute("SELECT * FROM table_name")
# 获取查询结果的第一行
row = cursor.fetchone()
# 继续获取查询结果的其他行
while row:
    print(row)
    row = cursor.fetchone()
db.close()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值