jdbctemplate 执行多条sql_SQL基础丨使用Python操作MySQL

16190494eb173d57c90eee579d62adef.png

Python DB API规范

Python可以支持非常多的数据库管理系统,例MySQL、Oracle、SQL Server和PostgreSQL等。

Python DB API规范

6d7c6f06b63a255f93964d7eff61b3c2.png

使用Python对DBMS进行操作的时候,经过的步骤

- 引入API模块

- 与数据库建立连接

- 执行SQL语句

- 关闭数据库连接

mysql-connector的使用

基于DB API规范的Python库:MySQLdb、mysqlclient、PyMySQL、peewee和SQLAlchemy等。

示例

- 使用mysql-connector完成数据库的连接和使用

安装mysql-connector

pip install mysql-connector

安装后,创建数据库连接

# -*- coding: UTF-8 -*-import mysql.connector# 打开数据库连接db = mysql.connector.connect(       host="localhost",       user="root",       passwd="XXX", # 写上你的数据库密码       database='wucai',        auth_plugin='mysql_native_password')# 获取操作游标 cursor = db.cursor()# 执行SQL语句cursor.execute("SELECT VERSION()")# 获取一条数据data = cursor.fetchone()print("MySQL版本: %s " % data)# 关闭游标&数据库连接cursor.close()db.close()

运行结果

MySQL版本: 8.0.13

Connection是对数据库的当前连接进行管理

- 通过指定host、user、passwd和port等参数来创建数据库连接,分别对应数据库IP地址、用户名、密码和端口号;

- 使用db.close()关闭数据库连接;

- 使用db.cursor()创建游标,操作数据库中的数据;

- 使用db.begin()开始事务;

- 使用db.commit()和db.rollback(),对事务提交以及回滚。

通过cursor = db.cursor()创建游标后,就可以通过面向过程的编程方式对数据库中的数据进行操作:

- 使用cursor.execute(query_sql),执行数据库查询;

- 使用cursor.fetchone(),读取数据集中的一条数据;

- 使用cursor.fetchall(),取出数据集中的所有行,返回一个元组类型;

- 使用cursor.fetchmany(n),取出数据集中的多条数据,返回 一个元组;

- 使用cursor.rowcount,返回查询结果集中的行数。如果没有查询到数据或者还没有查询,则结果为1,佛祖额会返回查询到的数据行数;

- 使用cursor.close(),关闭游标。

对数据表进行增删改查

增加数据

示例

- 在player表中增加一名新球员,姓名为“约翰 科林斯”

# 插入新球员sql = "INSERT INTO player (team_id, player_name, height) VALUES (%s, %s, %s)"val = (1003, "约翰-科林斯", 2.08)cursor.execute(sql, val)db.commit()print(cursor.rowcount, "记录插入成功。")

使用过cursor.execute来执行相应的SQL语句,val为SQL语句中的参数,SQL执行后使用db.commit()进行提交。

注:使用SQL语句的时候,可以向SQL语句传递参数,这是SQL语句要统一用(%s)进行展位,否则会报错。

用游标进行SQL操作之后,还需要使用db.commit()进行提交,否则数据不会被插入。

读取数据

示例

- 查询身高大于等于2.02m的球员

# 查询身高大于等于2.08的球员sql = 'SELECT player_id, player_name, height FROM player WHERE height>=2.08'cursor.execute(sql)data = cursor.fetchall()for each_player in data:  print(each_player)

运行结果

(10003, '安德烈-德拉蒙德', 2.11)(10004, '索恩-马克', 2.16)(10009, '扎扎-帕楚里亚', 2.11)(10010, '乔恩-洛伊尔', 2.08)(10011, '布雷克-格里芬', 2.08)(10015, '亨利-埃伦森', 2.11)(10023, '多曼塔斯-萨博尼斯', 2.11)(10024, '迈尔斯-特纳', 2.11)(10032, 'TJ-利夫', 2.08)(10033, '凯尔-奥奎因', 2.08)(10037, '伊凯·阿尼博古', 2.08)(10038, '约翰-科林斯', 2.08)

修改数据

示例

- 修改约翰科林斯的身高,修改成2.09

# 修改球员约翰-科林斯sql = 'UPDATE player SET height = %s WHERE player_name = %s'val = (2.09, "约翰-科林斯")cursor.execute(sql, val)db.commit()print(cursor.rowcount, "记录被修改。")

删除数据

示例

- 删除约翰科林斯这个球员

sql = 'DELETE FROM player WHERE player_name = %s'val = ("约翰-科林斯",)cursor.execute(sql, val)db.commit()print(cursor.rowcount, "记录删除成功。")

最后执行完,要关闭游标和数据库的连接

cursor.close()db.close()

注意事项

- 打开数据库连接以后,如果不再使用,则需要关闭数据库连接,以免造成资源浪费

- 在对数据进行增加、删除和修改的时候,可能出现异常,这时需要用try...except捕获异常信息。

示例

import tracebacktry:  sql = "INSERT INTO player (team_id, player_name, height) VALUES (%s, %s, %s)"  val = (1003, "约翰-科林斯", 2.08)  cursor.execute(sql, val)  db.commit()  print(cursor.rowcount, "记录插入成功。")except Exception as e:  # 打印异常信息  traceback.print_exc()  # 回滚    db.rollback()finally:  # 关闭数据库连接  db.close()

总结

2b741d65522dda1ac19993a47af2b887.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值