python mysql中in参数化说明
作者:songbaiyiran 发布时间:2024-01-13 08:38:02
第一种:拼接字符串,可以解决问题,但是为了避免sql注入,不建议这样写
还是看看第二种:使用.format()函数,很多时候我都是使用这个函数来对sql参数化的
举个例子:
select * from XX where id in (1,2,3)
参数化in里面的值:
select * from XX where id in ({}).format('1,2,3')
你可以打印下看看,和你原来的sql是一模一样的
补充知识:python与mysql交互/读取本地配置文件/交互报错
如果自己写mysql连接要读取本地配置文件,需要注意:
在配置文件config.ini中写:
[sql]
ip = xxx
port = xxx
table = xxx
uname = xxx
passwd = xxx
如:test.py文件
# 首先导入
import pymysql
# 这是获取配置文件的内容
host = conf.get('sql', 'ip')
port = conf.get('sql', 'port')
database = conf.get('sql', 'table'),
user = conf.get('sql', 'uname')
password = conf.get('sql', 'passwd')
# 建立mysql数据库连接
conn = pymysql.connect(host=host, port=port, db=database, user=user, password=password, charset='utf8') # 这里注意有可能报错,后面会说
sql = 'xxx' # sql语句
cs1 = conn.cursor() # 创建执行对象
count = cs1.execute(sql) # 执行sql语句,返回值是数据库中影响的行数,并赋值给count
conn.commit() # 提交数据库的变更
cs1.close() # 关闭执行对象
conn.close() # 关闭数据库连接对象
报错:
can only concatenate tuple (not "bytes") to tuple
这是因为在配置文件读进来的某个结果是个数组,打印看一下就知道了
但是在上篇python读取配置文件中,试过第一个[global]中读取的没有出现数组形式,这个是为什么我也不知道了,欢迎大家留言共同交流
[Errno 11004] getaddrinfo failed 和下面这个
django操作mysql时django.db.utils.OperationalError: (2003, "Can't connect to MySQL server")错误:
如果是在引用本地配置文件时报错,这个报错也很有可能是读取配置文件时的问题
可以尝试这样解决:
1.自己本地用工具也好,命令也好尝试连接一下,如果不行,那就可能是网络或者权限问题
2.如果上面可以,直接写一个独立的python文件,不去读取本地文件,将信息直接写在py文件中,运行结果可以,就是配置文件读取的问题
3.然后尝试读取,并打印读取结果,就能发现问题了
来源:https://blog.csdn.net/songbaiyiran/article/details/78328385


猜你喜欢
- 之前安装mysql 5.7.12时未做总结,换新电脑,补上安装记录,安装的时候,找了些网友的安装记录,发现好多坑(一)mysql 5.7.1
- 在 玉伯 的文章 《一道大题目,嘿嘿》 中有这样一段代码:[] == ![]也许很多同学迷惑:咦,这个如何转换呢?首先,我们了解下逻辑 NO
- 通常情况下:from threading import Threadglobal_num = 0def func1(): global gl
- 前言我们今天的任务很明确,我先系统梳理一下:1.先用Python爬取一波漂亮的美女照片;2.然后Python中炫酷的代码实现;3.最后用ma
- 这篇博客将介绍如何使用OpenCV制作Mask图像掩码。使用位运算和图像掩码允许我们只关注图像中感兴趣的部分,截取出任意区域的ROIs。应用
- 近几日遇到采集某网页的时候大部分网页OK,少部分网页出现乱码的问题,调试了几日,终于发现了是含有一些非法字符造成的..特此记录1. 在正常情
- 查询游戏历史成绩最高分前100Sql代码SELECT ps.* FROM cdb_playsgame ps WHERE ps.credits
- 环境准备卸载mariadbrpm -qa | grep mariadbrpm -e --nodeps mariadb-libs-5.5.60
- 本文实例讲述了js捐赠管理完整实现方法。分享给大家供大家参考。具体实现方法如下:index.html页面如下:<!DOCTYPE ht
- 1.Order By原理MySQL的Order By操作用于排序,并且会有多种不同的排序算法,他们的性能都是不一样的。假设有一个表,建表的s
- 实战场景 本篇博客学习字体反爬,涉及的站点是实习 x,目标站点地址直接百度搜索即可。可以看到右侧源码中出现了很多&ldqu
- 品牌是我们一直挂在嘴边的词语,视觉设计师们经常说到,公司的品牌该如何如何去设计?这个违背了我们的公司品牌!等等。之前我有谈过关于 品牌灵魂的
- 列表的添加1)+ 添加2)append 追加一次只能添加一个元素到列表中,适合用于循环里3)extend 拉伸可一次添加多个元素到列表中4)
- 本文实例为大家分享了python实现多人聊天室的具体代码,供大家参考,具体内容如下一、目的以实现小项目的方式,来巩固之前学过的Python基
- 一、数据库操作1、创建model表基本结构:#coding:Utf8from django.db import modelsclass us
- 在Python中,装饰器一般用来修饰函数,实现公共功能,达到代码复用的目的。在函数定义前加上@xxxx,然后函数就注入了某些行为,很神奇!然
- 首先谈谈它们的共同点吧:它们本质上都是一种对资源的独占锁定,都是由并发引起(如果数据库只有一个session,就谈不上锁定)。接着着重谈谈它
- 对比起Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制。由于 Session 是以
- mysql 模糊查询 concat()concat() 函数,是用来连接字符串。精确查询: select * from user where
- 阅读别人的python源码时碰到了这个yield这个关键字,各种搜索终于搞懂了,在此做一下总结:通常的for...in...循环中,in后面