python执行sql语句报错 TypeError: not enough arguments for format string

执行sql语句报错:

sql语句如下

sql1 = """ UPDATE hisinfo_cx SET media=%s WHERE post_id=%s AND media NOT LIKE '{%' """
cur.execute(sql1,(media_orig,t_cx_id))

原因是在sql语句中like后含有%号,python 认为它是转移符,这个时候,可以使用%%来表示,修改后的sql语句如下,可正常执行。

sql1 = """ UPDATE hisinfo_cx SET media=%s WHERE post_id=%s AND media NOT LIKE '{%%' """
cur.execute(sql1,(media_orig,t_cx_id))

Traceback (most recent call last): File "/Users/edy/PycharmProjects/PythonProject2/1.py", line 47, in <module> fetch_and_store(api_url, database_path) File "/Users/edy/PycharmProjects/PythonProject2/1.py", line 42, in fetch_and_store cursor.executemany(insert_sql, json_data) File "/Users/edy/PycharmProjects/PythonProject2/.venv/lib/python3.12/site-packages/pymysql/cursors.py", line 182, in executemany return self._do_execute_many( ^^^^^^^^^^^^^^^^^^^^^^ File "/Users/edy/PycharmProjects/PythonProject2/.venv/lib/python3.12/site-packages/pymysql/cursors.py", line 205, in _do_execute_many v = values % escape(next(args), conn) ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ TypeError: not enough arguments for format stringimport json import pymysql import requests import sqlite3 from flask import Flask, render_template_string from typing import List, Dict app = Flask(__name__) def fetch_and_store(url: str, db_path: str) -> None: # 1. 发起HTTP请求获取数据 response = requests.get(url, timeout=10) response.raise_for_status() # 自动处理HTTP错误 # 2. 解析JSON到Python列表 json_data: List[Dict] = response.json() # 3. 准备数据库连接 # 数据库连接配置 DB_CONFIG = { 'host': 'localhost', # 数据库地址 'user': 'root', # 用户名 'password': '11111111', # 密码 'database': 'python', # 数据库名 'port': 3306, # 端口 'charset': 'utf8mb4' # 字符集 } connection = pymysql.connect(**DB_CONFIG) insert_sql = ''' INSERT INTO container_info ( customer_id, node_info, image_id, container_id, container_create_time, container_start_time, container_run_status, container_restart_count ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) ''' for i in range(0,len(json_data)) : with connection.cursor() as cursor: cursor.executemany(insert_sql, json_data) # 使用示例 if __name__ == "__main__": api_url = "http://192.168.40.242/get_field" # 替换实际地址 database_path = "server_data.db" fetch_and_store(api_url, database_path)
最新发布
03-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值