浅谈pymysql查询语句中带有in时传递参数的问题

直接给出例子说明:

cs = conn.cursor()
img_ids = [1,2,3]
sql = "select img_url from img_url_table where id in %s"
cs.execute(sql, (img_ids, )) # 直接传递元组包裹列表即可

补充知识:Python将多行数据处理成SQL语句中where条件in(' ',' ',' ')的数据

在工作中有时需要查询上万行指定的数据,就会用到SQL语句中 select * from table1 where table1.name in (' ' , ' ' ) 的条件查询,所以自己写了个小小的Python脚本来处理这多行数据,废话不多说,上代码:

初级代码:

old_data = open("old_data.txt","r")
new_data = open("new_data.txt","w")
for line in old_data:
 line=line.strip('\n')
 new_data.write("'"+line+"',")
old_data.close()
new_data.close()

升级代码:

with open('old_data.txt','r') as f1:
 with open('new_data.txt','w') as f2:
  for line in f1:
   line = line.strip('\n')
   f2.write("'" + line + "',")

两种代码的效果都是一样的,使用open()函数,最后一步就要手动写调用close()方法,比较麻烦,所以升级后使用with 语句,这样Python就帮我们自动调用close()方法。

效果如下:

不足:处理后的数据应去掉最后一个逗号,这样才是最完整的SQL语句符合where in()条件的数据。

以上这篇浅谈pymysql查询语句中带有in时传递参数的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python Dict找出value大于某值或key大于某值的所有项方式

    对于一个Dict: test_dict = {1:5, 2:4, 3:3, 4:2, 5:1} 想要求key值大于等于3的所有项: print({k:v for k, v in test_dict.items() if k>=3}) 得到 {3: 3, 4: 2, 5: 1} 想要求value值大于等于3的所有项: print({k:v for k, v in test_dict.items() if v>=3}) {1: 5, 2: 4, 3: 3} 如果想要求k或者v某一个就取一个即可:

  • Python实现将元组中的元素作为参数传入函数的操作

    本文由Markdown语法编辑器编辑完成. 1. 需求: 现在有一个Python的需求需要实现: 就是实现连接一次数据库,就能够执行多条SQL语句,而且这个SQL语句是需要通过调用者将每一次执行的参数传入进来,组合成一条完整的SQL语句再去执行. 经过初步研究,传入参数时,通过数组的形式,数组中的每一个元素则是一个元组tuple(因为SQL中需要填入的参数可能是多个,所以需要通过元组的形式传入). 比如SQL语句的形式为: basic_sql = 'SELECT * FROM series se

  • python3检查字典传入函数键是否齐全的实例

    python 在传入字典参数到函数中时总是需要检查键是否齐全,每次手工写总是觉得太麻烦. 所以还是自己写一个比较方便. #Check if the incoming dictionary parameters are complete def check_keys(list, dic): if all(k in dic for k in list): return 1 else: return 0 def fun(**kwargs): if check_keys(['a', 'b', 'c'],

  • Python中操作mysql的pymysql模块详解

    前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 本文测试python版本:2.7.11.mysql版本:5.6.24 一.安装 pip3 install pymysql 二.使用操作 1.执行SQL #!/usr/bin/env pytho # -*- coding:utf-8 -*- import pymysql # 创建连接 conn = pymysql.connect(host=

  • 浅谈pymysql查询语句中带有in时传递参数的问题

    直接给出例子说明: cs = conn.cursor() img_ids = [1,2,3] sql = "select img_url from img_url_table where id in %s" cs.execute(sql, (img_ids, )) # 直接传递元组包裹列表即可 补充知识:Python将多行数据处理成SQL语句中where条件in(' ',' ',' ')的数据 在工作中有时需要查询上万行指定的数据,就会用到SQL语句中 select * from ta

  • 浅谈优化Django ORM中的性能问题

    Django是个好工具,使用的很广泛. 在应用比较小的时候,会觉得它很快,但是随着应用复杂和壮大,就显得没那么高效了.当你了解所用的Web框架一些内部机制之后,才能写成比较高效的代码. 怎么查问题 Web系统是个挺复杂的玩意,有时候有点无从下手哈.可以采用 自底向上 的顺序,从数据存储一直到数据展现,按照这个顺序一点一点查找性能问题. 数据库 (缺少索引/数据模型) 数据存储接口 (ORM/低效的查询) 展现/数据使用 (Views/报表等) Web应用的大部分问题都会跟 数据库 扯上关系.除非

  • 浅谈vue3在项目中的逻辑抽离和字段显示

    目录 逻辑分层 将各个区域业务分开 这样做的优势 这样的场景应该如何处理 优化 reactive 不一定非要写在setup函数中 如何在页面上直接显示值 逻辑分层 我们在使用vue3开发项目的时候, 如何进行[区域分层]呢???? 举一个简单的小粒子 一个区域有[查询逻辑.修改后的保存逻辑.新增逻辑.删除逻辑] 这个页面可能还有其他的区域.A区域.B区域,C区域...[有很多逻辑] 这个时候我们可以将一个区域的逻辑分离出去 将各个区域业务分开 export default { setup ()

  • 浅谈redis在项目中的应用

    redis在项目中的应用 ps:PHP 会自动 关redis连接 不需要手动关 对于临时的数据 可以不经过数据库直接redis上操作 /*消息队列实例 */ public function insertinfo(){ //连接本地的 Redis 服务 $redis = new \Redis(); $redis->connect('127.0.0.1', 6379); //存储数据到列表中 $infos = array('info1' => 66, 'info2' => 88); $red

  • 浅谈js在html中的加载执行顺序,多个jquery ready执行顺序

    jQuery $(document).ready()执行顺序: 当页面DOM 元素全部加载完毕后就执行.ready().$(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 如果在.ready()执行之前有javascript代码存在,那么javascript将怎么执行呢? 答案是先执行.ready()之前的javascript代码,然后执行.ready(). 多个$(document).ready()的执行顺序并非单纯的顺序执行,其与嵌套层级也有一定的关系.

  • 浅谈在fetch方法中添加header后遇到的预检请求问题

    今天在使用fetch方法 fetch('xxx.com',{header:{bbbbbbb:111}}) 浏览器返回的请求信息中,header变成了 :authority:koss.nocorp.me :method:OPTIONS :path:/?a=1 :scheme:https accept:*/* accept-encoding:gzip, deflate, br accept-language:zh-CN,zh;q=0.8 access-control-request-headers:

  • 浅谈Java finally语句到底是在return之前还是之后执行(必看篇)

    网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally语句是不会被执行的: (1)try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到. (2)在try块中有System.exit(0);这样的语句,System.exit(0);

  • 浅谈C/C++ 语言中的表达式求值

    经常可以在一些讨论组里看到下面的提问:"谁知道下面C语句给n赋什么值?" m = 1; n = m+++m++; 最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4,而不是4和5: a = 4; cout << a++ << a; C++ 不是规定 << 操作左结合吗?是C++ 书上写错了,还是这个系统的实现有问题? 注:运行a = 4; cout << a++ << a; 如在Visua

  • 浅谈pyqt5在QMainWindow中布局的问题

    引言: 在pyqt5中使用了父类为QMainWindow的话,在里面使用布局类,QGridLayout, QHBoxLayout ,QVBoxLayout 时,发现不好用. 解决: 如果是在以QWidget为父类的自定义类中使用这三个布局类的话,是很好用的,但是在QMainWindow中使用的时候要多写几句话.具体如下所示: widget = QWidget() widget.setLayout(gridLayout) self.setCentralWidget(widget) 这几句话加在哪里

  • 浅谈laravel框架sql中groupBy之后排序的问题

    最近在用框架给公司App写接口时,碰到了一个棘手的问题: 对查询结果进行排序并进行分页(进行了简略修改),下面是最终结果代码: $example = Example::select(DB::raw('max(id) as some_id,this_id')) ->where('id', $id) ->groupBy('this_id') ->orderBy('some_id', 'desc') ->skip($offset) ->take($limit) ->get()

随机推荐