python关于pymysql 执行sql语句in的用法

news/2024/9/20 13:17:54

今天在执行python代码中发现一个有意思的事,直接看代码注意如下红色部分

name = '张三'
ids =  1, 2, 3
sql = " select NAME,  NUM,   SEX  from TEMP_T WHERE NAME = %s  and id in (%s)"
param = (name,ids)
cursor.execute(sql,param)

 发现实际执行的sql语句是:

select NAME,  NUM,   SEX  from TEMP_T WHERE NAME ='张三'  and id in (1)

语句并没有按照预期的结果执行,分析发现参数param = (name,ids)多个参数就是用逗号隔开的,估计就是这里的错误,本想着把后面的参数变成一个整体应该就可以解决。尝试了元组、列表都失败,

网上还给出param = (name,(ids,))这样写就可以解决,可能是我开发环境不同这么写依然不行。

最后用了拼接字符串的方法丝滑解决,往往简单的办法最有效,直接看完整代码。

#coding=utf-8
import random
import pymysql# 连接数据库
connection = pymysql.connect(host='192.168.0.100', user='test', password='pwd', database='testdb',port=3306)
# 操作数据库  创建一个游标
cursor = connection.cursor()
try:#随机生成50个以 1-1000之间的整数ids = [random.randint(1, 1000) for _ in range(50)]# 将id列表转换为适用于SQL查询的字符串格式ids_str = ','.join(map(str, ids))# 随机获取100个账号# 定义SQL查询语句,使用%s作为参数占位符sql = " select NAME,  NUM,   SEX  from TEMP_T WHERE NAME = %s  and id in (" +ids_str +")"name = '张三'param = (name)# 执行SQL查询(假设你已经建立了数据库连接和游标)cursor.execute(sql,param)mame = ''num = ''sex = ''# 获取查询结果rows = cursor.fetchall()for row in rows:mame = row[0]num = row[1]sex = row[2]except pymysql.Error as e:print(f'错误:,{e}')cursor.close()  # 关闭游标
connection.close()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/62512.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

ESXi 8.0 中已弃用且不受支持的设备 (88172)

ESXi 8.0 中已弃用且不受支持的设备 (88172)ESXi 8.0 中已弃用且不受支持的设备 (88172) 请访问原文链接:ESXi 8.0 中已弃用且不受支持的设备 (88172),查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org该文为官方 KB 的翻译和整理,方便查询 ESXi 8.0 中不再支持…

帝国cms建立目录不成功!请检查目录权限

当帝国CMS提示“建立目录不成功!请检查目录权限”时,通常是因为帝国CMS在尝试生成静态页面或执行其他文件操作时,遇到了文件系统权限问题。以下是一些解决此问题的步骤: 常见原因及解决办法目录权限不足:解决办法:确保目标目录具有可写的权限。通常,文件权限应设为 644,…

帝国CMS:恢复备份文件刷新时出错——建立目录不成功

当帝国CMS在恢复备份文件刷新时提示“建立目录不成功”,这通常意味着在生成静态页面或存放相关文件的过程中遇到了问题。以下是一些可能的原因及其解决办法: 常见原因及解决办法目录权限问题:解决办法:检查目标目录的权限是否正确。通常文件权限应设为 644,目录权限为 755…

帝国CMS 建立目录不成功!

帝国CMS在尝试建立目录时提示“建立目录不成功”,通常是因为权限问题或其他与文件系统相关的障碍。以下是一些可能的原因及解决方法: 常见原因及解决方法目录权限不足:解决方法:确保目标目录具有可写的权限。通常,文件权限应设为 644,目录权限为 755。可以通过FTP客户端或…

帝国cms数据库连接不上怎么办

当帝国CMS无法连接数据库时,这通常是由多种原因引起的。以下是一些常见的解决步骤: 常见原因及解决办法数据库配置错误:解决办法:检查帝国CMS的数据库配置文件(通常位于 /e/config/config.php),确认数据库服务器地址、用户名、密码和数据库名称是否正确。数据库服务未启…

帝国CMS提示parse error syntax error的解决方法

当帝国CMS提示“Parse error: syntax error”时,这通常意味着PHP解析器遇到了无法理解的代码,最常见的原因是语法错误。以下是一些解决此类问题的方法: 常见原因及解决办法检查语法错误:解决办法:仔细检查报错行附近的代码,查找是否有语法错误,如缺少分号、括号不匹配、…

香橙派5Pro+虚拟机Ubuntu18.04交叉编译+Opencv4.7

1.基础工具安装 ①Ubuntu虚拟机下交叉编译工具链安装 香橙派5Pro为Arm64位架构,因此需要安装g++-aarch64-linux-gnu以及gcc-aarch64-linux-gnu(有其它交叉编译器,本文以此编译器为例)更新软件源 sudo apt update sudo apt upgrate点击查看交叉编译工具链安装 apt-cache sea…

周五学习 -2024/9/20

今天9月20日,出发去徐州! HashMap HashMap的特点HashMap底层是哈希表结构的 依赖hashCode方法和equals方法保证键的唯一 如果键存储的是自定义对象,需要重写hashCode和equals方法DQL-分页查询 SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数; 注意:起始索引从0开始,起始…