优化这段代码 import pymssql import datetime def write_log(id, num, staff): # 获取当前时间 time = datetime.datetime.now() # 连接 SQL Server 数据库 cnxn = pymssql.connect('10.253.223.14', 'sa', 'Ll123456!', 'Lyc_Graph') # 构造 SQL 语句 sql = "INSERT INTO [Graph_use_log].[dbo].[use_log] (id, num, staff, time) VALUES (?, ?, ?, ?)" # 执行 SQL 语句 cursor = cnxn.cursor() cursor.execute(sql, id, num, staff, time) # 提交事务并关闭连接 cnxn.commit() cnxn.close() print("log入库成功") num = '12412412' write_log(231232,num,3214) 其中execute() takes at most 2 positional arguments (5 given)
时间: 2024-04-27 21:23:22 浏览: 94
import pymssql
import datetime
def write_log(id, num, staff):
# 获取当前时间
time = datetime.datetime.now()
# 连接 SQL Server 数据库
with pymssql.connect('10.253.223.14', 'sa', 'Ll123456!', 'Lyc_Graph') as cnxn:
# 构造 SQL 语句
sql = "INSERT INTO [Graph_use_log].[dbo].[use_log] (id, num, staff, time) VALUES (%s, %s, %s, %s)"
# 执行 SQL 语句
cursor = cnxn.cursor()
cursor.execute(sql, (id, num, staff, time))
# 提交事务并关闭连接
cnxn.commit()
print("log入库成功")
num = '12412412'
write_log(231232, num, 3214)
优化点如下:
1. 使用 with 语句可以自动关闭连接,不需要显式调用 cnxn.close()。
2. 将 SQL 语句中的参数用 %s 替换,然后在 cursor.execute() 函数中传入一个元组,这样可以避免出现 execute() takes at most 2 positional arguments (5 given) 的错误。
3. 将函数调用和打印语句放在函数外部,使代码更加简洁。
阅读全文