python 插入数据库对字符串进行转义、python insert sql中对字符串进行转义、python插入数据库包含特殊字符、python操作mysql数据库、python批量插入更新

以下整理几种python中插入表的几种写法,有些地方可能会遇到插入时字段中本身带有引号或换行符等特殊字符,下面几种方式支持将特殊字符插入到数据库中。

一、python 插入数据库的几种方式

表结构准备:

CREATE TABLE `user` (
  `id` int NOT NULL PRIMARY KEY AUTO_INCREMENT comment '主键id',
  `name` varchar(10)  DEFAULT NULL COMMENT '姓名',
  `age` int  DEFAULT NULL COMMENT '年龄'
) ENGINE=InnoDB AUTO_INCREMENT=1;

1.1、方式一:手动拼装value

注意:这种方式不支持引号、换行符等需要转义的特殊字符

# coding=utf-8

import sys
import mysql.connector
reload(sys)
sys.setdefaultencoding('utf8')

# 连接参数
conn_params = {
    'user': 'root',
    'password': '1234',
    'host': 'localhost',
    'database': 'test',
    'auth_plugin': 'caching_sha2_password'
}


if __name__ == '__main__':
    # 连接mysql
    connection = mysql.connector.connect(**conn_params)
    try:
        # 使用cursor()方法获取操作游标
        with connection.cursor() as cursor:
            #name="a'b\r\nc"
            name="abc"
            age = 10
            value = "(null,'"+name+"','"+str(age)+"')"
            # 编写SQL语句
            sql = "insert into user values {0}".format(value)
            # 执行SQL语句
            cursor.execute(sql)
    finally:
        connection.close()  # 关闭数据库连接

1.2、方式二:%s传参

这种方式可以支持引号、换行符等需要转义的特殊字符

# coding=utf-8

import sys
import mysql.connector
reload(sys)
sys.setdefaultencoding('utf8')

# 连接参数
conn_params = {
    'user': 'root',
    'password': '1234',
    'host': 'localhost',
    'database': 'test',
    'auth_plugin': 'caching_sha2_password'
}

if __name__ == '__main__':
    # 连接mysql
    connection = mysql.connector.connect(**conn_params)
    try:
        # 使用cursor()方法获取操作游标
        with connection.cursor() as cursor:
            name="a'b\r\nc"
            #name="abc"
            age = 10
            params = []
            params.append(None)
            params.append(str(name))
            params.append(str(age))
            # 编写SQL语句
            sql = "insert into user values (%s,%s,%s)"
            # 执行SQL语句
            cursor.execute(sql,params=params)
            # 或者用下面这种方式
            #cursor.execute(sql, (None,str(name),str(age)) )
    finally:
        connection.close()  # 关闭数据库连接

1.3、批量插入(底层for循环单条插入)

底层逻辑是for循环单条插入,并不是真正意义上的批量插入

import pymysql

#连接到MySQL数据库
conn = pymysql.connect(host='localhost', user='username', password='password', database='dbname')
cursor = conn.cursor()

#批量插入数据
sql = "INSERT INTO table_name (column1, column2) VALUES (%s, %s)"
values = [('value1', 'value2'), ('value3', 'value4'), ('value5', 'value6')]
cursor.executemany(sql, values)

#提交事务
conn.commit()

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

1.4、批量插入(真正意义的批量插入)

import pymysql

#连接到MySQL数据库
conn = pymysql.connect(host='localhost', user='username', password='password', database='dbname')
cursor = conn.cursor()

#批量插入数据
sql = "INSERT INTO table_name (column1, column2) VALUES (%s, %s),(%s, %s)"
cursor.execute(sql, ('value1', 'value2','value3', 'value4'))

#提交事务
conn.commit()

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

二、更新数据库

2.1、单行更新数据库

import pymysql

#连接到MySQL数据库
conn = pymysql.connect(host='localhost', user='username', password='password', database='dbname')
cursor = conn.cursor()

#更新单行数据
sql = "UPDATE table_name SET column1 = %s WHERE condition_column = %s"
cursor.execute(sql, ('new_value', 'condition_value'))

#提交事务
conn.commit()

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

2.2、批量更新数据库

底层是for循环单条更新

import pymysql

#连接到MySQL数据库
conn = pymysql.connect(host='localhost', user='username', password='password', database='dbname')
cursor = conn.cursor()

#批量更新数据
sql = "UPDATE table_name SET column1 = %s WHERE condition_column = %s"
values = [('new_value1', 'condition_value1'), ('new_value2', 'condition_value2')]
cursor.executemany(sql, values)

#提交事务
conn.commit()

#关闭游标和连接
cursor.close()
conn.close()
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值