gpt4 book ai didi

python - 使用 Python 3.7 和 set_authorizer 方法出现 'not authorized' 错误

转载 作者:行者123 更新时间:2023-12-01 07:31:43 27 4
gpt4 key购买 nike

我有相对简单的代码,应该可以防止查看 sqlite3 数据库中的密码。不幸的是它给了我一个错误:

Traceback (most recent call last):
File "C:\Users\XXXX\Desktop\VR\add_users.py", line 19, in <module>
cursor = conn.execute('SELECT * FROM users;')
sqlite3.DatabaseError: not authorized

我的代码:

import sqlite3
import os.path

db_file = os.getcwd() + '\\assets\\users.db'
conn = sqlite3.connect(db_file)

conn.execute('INSERT INTO users (username, password) VALUES (?, ?), (?, ?)',
('user1', 'pass1', 'user2', 'pass2'))

def authorizer(action, arg1, arg2, db_name, trigger_name):
#if action == SQLITE_DELETE and arg1 == 'users':
# return SQLITE_DENY
#elif action == SQLITE_READ and arg1 == 'users' and arg2 == 'password':
# return SQLITE_IGNORE
return SQLITE_OK

conn.set_authorizer(authorizer)

cursor = conn.execute('SELECT * FROM users;')

即使只保留 return SQLITE_OK 行并将其他所有内容注释掉,它也不起作用。我做错了什么?

编辑:更改为 return sqlite3.SQLITE_OK 在使用 defauthorizer(*args): 时打印以下内容,但不适用于 defauthorizer(action, arg1, arg2, db_name,trigger_name):

(21, None, None, None, None)
(20, 'users', 'username', 'main', None)
(20, 'users', 'password', 'main', None)
(22, 'COMMIT', None, None, None)

谢谢!

最佳答案

SQLITE_OK 是一个 sqlite3 常量,因此如果您返回 sqlite3.SQLITE_OK,它应该可以工作。

关于python - 使用 Python 3.7 和 set_authorizer 方法出现 'not authorized' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57182845/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com