python学习站 /第四周mysql数据库
阅读主题
正文字体
字体大小

15.拼接sql

本节1395字2025-04-18 17:10:06
"""
Auther:少校
Time:2025/4/18 11:28
越努力,越幸运
"""
import pymysql
sql1 = pymysql.connect(
    user='root',            #用户名
    password='shaoxiao',    #密码
    host='127.0.0.1',       #IP地址
    port=3306,              #端口号
    database='school',      #默认连接数据库/多个数据库默认哪个
    charset='utf8mb4',      #编码
    autocommit=False        #是否自动提交,默认关
)

s1 = sql1.cursor()
# 1. sql语句拼接动态变量
"""
如果sql命令的部分内容是动态变量。
1)用字符串拼接 - 不推荐使用
a.如果数据在sql中是文本数据,拼接的时候注意引号的添加。需要手动在 {}外添加''。
b.如果是插入数据的sql语句,用字符串拼接的sql命令存在sql注入攻击的风险
2)用sql占位符 %s
再写sql语句的时候,在变化的位置用%s占位,然后在通过参数来提供占位符的数据。
"""
# 用字符串拼接
# name = '经管学院'          #input("请输入学院名称:")
# intro = '经管学院介绍...'   #input("学院简介:")
# s1.execute(f"insert into colleges(`col_name`,`col_intro`) values('{name}','{intro}');")

# 用sql占位符 %s
# name = '经管学院'          #input("请输入学院名称:")
# intro = '经管学院介绍...'   #input("学院简介:")
# s1.execute("insert into colleges(`col_name`,`col_intro`) values(%s,%s);",(name,intro))
# sql1.commit()

# 2. 多执行
# 如果sql中有%s对应的sql占位符,那么我们就可以使用executemany将同一个sql执行多次,每次提供不同的数据
try:
    s1.executemany("insert into colleges(`col_name`,`col_intro`) values(%s,%s);",[
        ('理学院','学数学的'),
        ('佛学院','学佛法的'),
    ])
    sql1.commit()
except pymysql.Error:
    sql1.rollback()


网友评论

相关作品