我正在尝试使用该Connection.set_authorizer
方法仅允许使用连接对象进行某些 DB 操作。(文档在这里)
我正在使用此代码进行测试:
import sqlite3 as sqlite
def select_authorizer(sqltype, arg1, arg2, dbname):
print("Test")
return sqlite.SQLITE_OK #should allow all operations
conn = sqlite.connect(":memory:")
conn.execute("CREATE TABLE A (name integer PRIMARY KEY AUTOINCREMENT)")
conn.set_authorizer(select_authorizer)
conn.execute("SELECT * FROM A").fetchall() #should still work
这给了我一个sqlite3.DatabaseError: not authorized
,没有打印出“测试”。我猜我可能错误地设置了我的授权人,而且它甚至都没有调用它。(虽然错误消息肯定没有传达)但是根据文档,这个设置看起来是正确的。
编辑:更改sqlite.SQLITE_OKAY
为sqlite.SQLITE_OK
,但由于该方法似乎根本没有被调用,所以这没有帮助也就不足为奇了。