“attach '%s' as toMerge” % “b.db”
您应该使用’而不是',这样就不必逃脱。
您使用了不建议使用的旧格式字符串。
’attach '{0}' as toMerge’.format('b.db')
这将使用来自较新Python版本的新格式字符串功能,如果可能的话,应使用旧版本而不是旧版本。
'attach ? as toMerge'; cursor.execute(cmd, (’b.db’, ))
该代码完全省略了字符串格式,而是使用了sqlite功能,因此这是正确的方法。
最大优势:无sql注入风险
解决方法在有关SQLite的)这篇文章中,aaronasterling告诉我
cmd = 'attach '%s' as toMerge' % 'b.db' : 是错的cmd = ’attach '{0}' as toMerge’.format('b.db') : 是正确的cmd = 'attach ? as toMerge'; cursor.execute(cmd,(’b.db’,)) :是对的但是,我认为第一和第二是相同的。这三个之间有什么区别?