Python SQLite"?"附近:语法错误

crs*_*shd 3 python sqlite

另外一个问题.我正在尝试:

self.table = 'table'
a = 'column'
b = 'value'

c.execute('INSERT INTO ? (?) VALUES (?)', (self.table, a, b))
Run Code Online (Sandbox Code Playgroud)

但我得到了

<class 'sqlite3.OperationalError'>:near "?": syntax error
Run Code Online (Sandbox Code Playgroud)

同时,

c.execute('INSERT INTO {0} ({1}) VALUES ({2})'.format(self.table, a, b))
Run Code Online (Sandbox Code Playgroud)

除安全问题外,工作完美无缺.

我意识到我不是第一个遇到这个问题的人,但我还没有找到适合我的解决方案.

fal*_*tru 8

表名,列名不能参数化.请尝试以下方式.

self.table = 'table'
b = 'value'

c.execute('INSERT INTO {} ({}) VALUES (?)'.format(self.table, a), (b,))
Run Code Online (Sandbox Code Playgroud)

  • 我一直这样做.你必须要小心self.table是一个你可以绝对控制的值,因为如果你没有严格的控制,那么SQL注入攻击绝对是可能的.:) (3认同)