Python 带有like from变量的Sql语句
我正在用python执行这段代码Python 带有like from变量的Sql语句,python,sqlite,Python,Sqlite,我正在用python执行这段代码 from sqlite3 import dbapi2 as sqlite con = sqlite.connect("db.sqlite") cur = con.cursor() surname = "'%atton%'" cur.execute("select id from singers where surname like :surname", locals()) cur.close() con.close() 在此代码之后cur.rowcount=
from sqlite3 import dbapi2 as sqlite
con = sqlite.connect("db.sqlite")
cur = con.cursor()
surname = "'%atton%'"
cur.execute("select id from singers where surname like :surname", locals())
cur.close()
con.close()
在此代码之后cur.rowcount==-1
但巴顿在数据库中
我的SQL语句不好吗
谢谢您使用的DB-API参数化(您应该使用,不要更改)意味着姓氏将自动被适当引用或转义。您应该删除
姓氏
字符串中的内部引号集
surname = "%atton%"
cur.execute("select id from singers where surname like :surname",
dict(surname=surname))
您使用的DB-API参数化(您应该使用,不要更改)意味着姓氏将自动被适当引用或转义。您应该删除
姓氏
字符串中的内部引号集
surname = "%atton%"
cur.execute("select id from singers where surname like :surname",
dict(surname=surname))
问题仍然存在。没什么变化。那你就得进一步讨论这个问题了。您使用的是什么DB-API模块?它使用什么样式?您是否正在读取查询结果?DB-API模块甚至会麻烦正确设置行数吗?“它使用什么样的paramstyle?”这是什么意思?“您是..查询吗?”是的,如果cur.rowcount>0:,我正在读取结果
,但此代码未执行。“是否…正确?”是的,我在代码的另一部分中使用了它,它工作正常。主要的问题是姓氏,比如:姓氏
<代码>姓氏=:姓氏
起作用。如果cur.rowcount>0
未“读取结果”sqlite3
不为这些查询设置行数。您需要实际获取结果,或者使用游标对象的fetch*方法之一,或者迭代游标对象本身。@Thomas Wouters如果可以,您能给我发送一个链接吗?您为什么使用dict(姓氏=姓氏)以及您如何知道使用“%atton%”?我还没有在sqlite页面上发现这种缺陷。问题仍然存在。没什么变化。那你就得进一步讨论这个问题了。您使用的是什么DB-API模块?它使用什么样式?您是否正在读取查询结果?DB-API模块甚至会麻烦正确设置行数吗?“它使用什么样的paramstyle?”这是什么意思?“您是..查询吗?”是的,如果cur.rowcount>0:,我正在读取结果,但此代码未执行。“是否…正确?”是的,我在代码的另一部分中使用了它,它工作正常。主要的问题是姓氏,比如:姓氏
<代码>姓氏=:姓氏
起作用。如果cur.rowcount>0
未“读取结果”sqlite3
不为这些查询设置行数。您需要实际获取结果,或者使用游标对象的fetch*方法之一,或者迭代游标对象本身。@Thomas Wouters如果可以,您能给我发送一个链接吗?您为什么使用dict(姓氏=姓氏)以及您如何知道使用“%atton%”?我在sqlite页面上没有发现这种缺陷。