所以出于某种原因,我在select语句中使用占位符时遇到错误.
def get_id(table_name, id_name):
db = sqlite3.connect('test_db')
max_id = db.execute('''SELECT max(?) FROM ?''', (id_name, table_name)).fetchone()[0]
if not max_id:
primary_id = 0
else:
primary_id = max_id + 1
此函数返回此错误:
File "test.py", line 77, in get_id
max_id = db.execute('''SELECT max(?) FROM ?''', (id_name, table_name)).fetchone()[0]
sqlite3.OperationalError: near "?": syntax error
另外,以防万一:
id_name = 'pos_id'
table_name = 'Poscar'
解决方法:
您无法为列名或表名使用占位符.占位符用于从数据库插入或检索数据的值.图书馆正确清理它们.
要做你想做的事,尝试这样的事情:
db.execute('''SELECT max({}) FROM {}'''.format(id_name, table_name)).fetchone()[0]
这将使用string formatting来构建您的查询.如果您需要为此添加WHERE条件,您仍然可以使用参数执行此操作:
db.execute('''SELECT max({}) FROM {} WHERE ID = ?'''.format(id_name, table_name), id_variable).fetchone()[0]
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!