Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带有like from变量的Sql语句_Python_Sqlite - Fatal编程技术网

Python 带有like from变量的Sql语句

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=

我正在用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==-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页面上没有发现这种缺陷。