我正在尝试从db中提取第二个位置的A的名称。 在sql中它很简单,但python将'_A%'视为查询的结尾。 有没有人遇到过这个问题并提出解决方案? 我看到一个类似的问题,接受结果是使用'%%'而不是'%',但这没有用。 这是我的问题:
def queryDelivery(start_date):
query_basictable = """
SELECT Code,Quantity, Datetime
FROM Mytable
WHERE Datetime>= '%s 12:00:00' AND Name LIKE '_A%'
""" %(start_date)
delivery_data= pd.read_sql(sql=query_basictable, con=engine)
return delivery_data
我正在考虑将符号'_A%'传递给变量并执行类似替换的操作但是当尝试分配符号命中时出现语法错误
variable = ''_A%' '
Name LIKE variable
我怎样才能以干净的方式做到这一点?
答案 0 :(得分:0)
不要这样做。一旦你这样做,如果有人插入像"'; drop table students; --"这样的start_date你就会遇到问题。
我在Python 2.7中测试了占位符,看起来在使用%
运算符之前不会遇到问题。
更好的方法是以传入的每个值都可以在占位符中使用的方式编写SQL语句。然后使用占位符语法,语法变为LIKE ? || '%'