一、进行 update,insert时,发现sql执行无效,原因是未进行提交
(1)具体原因
在使用python操作mysql时,自动提交默认为off
- update,delete,insert等修改表中数据的需要commit
- create,drop,alter等修改表结构的,就不需要commit,因为内部隐藏了commit
(2)连接数据库的代码
import pymysql
import json
def exe_sql(sql):
# 建立连接
conn = pymysql.connect(host='10.X.XXX.XXX',
port=3306,
user='XXX',
password='XXXXXX',
database='XXXXX',
charset = "utf8")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor(pymysql.cursors.DictCursor)
# 使用 execute() 方法执行 SQL 查询
cursor.execute(sql)
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
#修改表中数据需要有提交的动作
conn.commit()
# 关闭数据库连接
cursor.close()
conn.close()
二、sql赋值未不能进行变量的替换,原因sql未进行格式化
(1)具体原因
赋值的sql为一个string类型,未对字符串进行格式化,造成sql无法识别
(2)修改后的字符串
def insert_turnover(字段1变量名,字段2变量名):
insert_account_turnover = f"insert into `表明` (`字段1`,`字段2`,`...`,`字段n`) values ('{字段1变量名}',"...",\"字段n的值",curdate(),now(),'{字段2变量名}');"
exe_sql(字段1变量名,字段2变量名)
说明:
curdate():获取当前日期
now():获取当前时间