python中sqlite的SQL错误

python中sqlite的SQL错误,python,sql,sqlite,Python,Sql,Sqlite,我希望SQL命令有一个简单的问题 代码: pic_num是数据库中的一列,user_id是数据库中的一个整数 我原以为一切都会好的但我明白了 错误: sqlite3.error:near“:语法错误 这些信息对我一点帮助都没有使用python的db api的正确方法是传递查询值,即: c.execute("SELECT MAX(pic_num) FROM Pictures WHERE id=?", [user_id,]) 请注意,这可能不一定能解决您的问题,但由于您没有发布架构或用户id

我希望SQL命令有一个简单的问题

代码:

pic_num是数据库中的一列,user_id是数据库中的一个整数

我原以为一切都会好的但我明白了 错误:

sqlite3.error:near“:语法错误


这些信息对我一点帮助都没有

使用python的db api的正确方法是传递查询值,即:

c.execute("SELECT MAX(pic_num) FROM Pictures WHERE id=?", [user_id,])   

请注意,这可能不一定能解决您的问题,但由于您没有发布架构或
用户id
值,因此我们无法尝试重现该问题。

使用python的db api的正确方法是传递查询值,即:

c.execute("SELECT MAX(pic_num) FROM Pictures WHERE id=?", [user_id,])   

请注意,这可能不一定能解决您的问题,但由于您没有发布架构或
用户id
值,因此我们无法尝试重现该问题。

您应该像这样替换python sqlite模块:

c.execute("SELECT MAX(pic_num) FROM Pictures WHERE id = ?", (user_id, ))

您应该像这样替换python sqlite模块:

c.execute("SELECT MAX(pic_num) FROM Pictures WHERE id = ?", (user_id, ))

谢谢大家的快速回答

c.execute("SELECT MAX(pic_num) FROM Pictures WHERE id = ?", (str(user_id), ))
这终于奏效了:)


我已经写了一些应该处理SQL注入的LIB(它们测试输入的引号,但是你说得对,我对SQL:D非常熟悉)

谢谢大家的快速回答

c.execute("SELECT MAX(pic_num) FROM Pictures WHERE id = ?", (str(user_id), ))
这终于奏效了:)


我已经编写了一些应该处理SQL注入的LIB(它们测试输入的引号,但是你说得对,我对SQL:D非常熟悉)

@PM77-1你应该打印构造的查询字符串,因为它被送入execute()。也许用户id不是您所期望的。只需补充一点,执行SQL查询时的字符串连接是不好的,并为SQL注入留下了广阔的空间。请检查此页:。大多数驱动程序允许您传递字符串替换的参数,这将首先清理并阻止所述SQL注入。@Brunodesshuilliers-基于OP问题,我认为他还没有准备好处理SQL注入。我认为文档建议这样做:
c.execute(“从id=?”的图片中选择MAX(pic_num),str(user_id))
@PM77-1您应该在将构造的查询字符串馈送到execute()时打印它。也许用户id不是您所期望的。只需补充一点,执行SQL查询时的字符串连接是不好的,并为SQL注入留下了广阔的空间。请检查此页:。大多数驱动程序允许您传递字符串替换的参数,这将首先清理并阻止所述SQL注入。@Brunodesshuilliers-基于OP问题,我认为他还没有准备好处理SQL注入。我认为文档建议这样做:
c.execute(“从id=?”的图片中选择MAX(pic_num),str(user_id))
转义字符串比使用占位符更糟糕。占位符根本不解析作为sql提供的内容,它是一个单独的项。转义字符串比使用占位符更糟糕。占位符根本不解析作为sql提供的内容,它是一个单独的项。