吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 657|回复: 13
收起左侧

[求助] pymysql语句求助

[复制链接]
sxfxtf 发表于 2022-10-20 17:23
本帖最后由 sxfxtf 于 2022-10-20 17:29 编辑

我要用pymysql插入几条数据,先用execute做测试
比如数据
a=1
b='精瘦肉'
c=22.6
d='猪肉(3种)'
e='/500'
f='2021/06/01'
sql = 'insert into cailanzi(mark_id,commodity_name,price,category,unitename,post_date) values(%s,%s,%s,%s,%s,%s)'
然后下面可以成功执行cursor.execute(sql, (a,b,c,d,e,f))
但是我的情况是a这个参数我需要先从另一张表匹配一个市场名称的id
所以a实际上改成 a='(select id from mark_info where mark_name="海曙中心菜市场")'
然后就插入不成功了,
请教下 插入前匹配的话  在execute这里的sql语句要怎么拼接字符串啊


这个字符串拼接后插入是没有问题的
image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

GMCN 发表于 2022-10-20 17:31
试试  a=r'(<sql>)'
GMCN 发表于 2022-10-20 17:32
海是倒过来的天 发表于 2022-10-20 17:32
在数据库里面直接写语句当然没问题,在编程比如python中用pymysql插入,你要先把A赋值,用execute运行一次再插入就可以了
 楼主| sxfxtf 发表于 2022-10-20 17:44
海是倒过来的天 发表于 2022-10-20 17:32
在数据库里面直接写语句当然没问题,在编程比如python中用pymysql插入,你要先把A赋值,用execute运行一次 ...

我A不是赋值sql语句了吗?,就是报错
 楼主| sxfxtf 发表于 2022-10-20 17:45

我试了下 不行,还是报错
GMCN 发表于 2022-10-20 18:05
这样是不行的,不能用%s把变量替换进去,这个是数据库参数安全,里面的变量都会转义。你可以直接把那个select语句当成sql的一整个部分,然后那个where条件 改成%s,然后后面变量去添加那个条件值。
 楼主| sxfxtf 发表于 2022-10-20 20:54
GMCN 发表于 2022-10-20 18:05
这样是不行的,不能用%s把变量替换进去,这个是数据库参数安全,里面的变量都会转义。你可以直接把那个sele ...

老哥 我按你的思路试了试 还是不行.可否写个例子指点下我

a="海曙中心菜市场"
b='精瘦肉'
c=22.6
d='猪肉(3种)'
e='元/500克'
f='2021/06/01'
sql = "insert into cailanzi(mark_name,commodity_name,price,category,unitename,post_date) values((select id from mark_info where mark_name=%s),%s,%s,%s,%s,%s)"
Nettos 发表于 2022-10-20 23:52
那你可以先用另一张表中查询出ID,先赋值给a可以么
 楼主| sxfxtf 发表于 2022-10-21 00:12
Nettos 发表于 2022-10-20 23:52
那你可以先用另一张表中查询出ID,先赋值给a可以么

这个可以的,我只是想研究下如果用子查询  那么pymysql要怎么搞,毕竟这样代码量少很多
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 06:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表