我们可以使用python3使sqlite3行只读吗

我们可以使用python3使sqlite3行只读吗,python,sqlite,datetime,if-statement,Python,Sqlite,Datetime,If Statement,我正在尝试制作一个简单的数字游戏,并希望将值存储在sqlite3数据库中,我不想让其他用户看到或编辑数据库,我尝试使用授权程序,但它只能在代码中工作,当我尝试在代码中编辑/删除时,它会抛出一个异常,但当我尝试在sqlite3 studio中更改值时,它会更改并得到更新 我写的授权人代码是 def authoriser(action, args1, b, db_name, source): if action == sqlite3.SQLITE_SELECT and args1 == "ru

我正在尝试制作一个简单的数字游戏,并希望将值存储在sqlite3数据库中,我不想让其他用户看到或编辑数据库,我尝试使用授权程序,但它只能在代码中工作,当我尝试在代码中编辑/删除时,它会抛出一个异常,但当我尝试在sqlite3 studio中更改值时,它会更改并得到更新 我写的授权人代码是

def authoriser(action, args1, b, db_name, source):
   if action == sqlite3.SQLITE_SELECT and args1 == "run":
       return sqlite3.SQLITE_OK
   elif action == sqlite3.SQLITE_DELETE and args1 == "run":
       return sqlite3.SQLITE_DENY
   elif action == sqlite3.SQLITE_READ and args1 == "run" and b == 'hash2':
       return sqlite3.SQLITE_OK
   return sqlite3.SQLITE_OK
删除之前sqlite3 studio中的数据库


删除后的数据库


它可以完美地编译和执行,但问题是我可以在sqlite3 studio或任何GUI中编辑它,sqlite3没有任何类型的访问权限,因此无法防止某些行被更新和/或删除,特别是被其他应用程序更新和/或删除。Sqlite是一个嵌入式数据库库,因此如果另一个应用程序可以访问该文件,那么它可以打开该文件并获得对数据的不受限制的访问


有一个加密模块可以添加到sqlite中,但官方加密模块需要许可证才能支付价格。也许可以使用其他加密解决方案,但必须单独研究。

我猜您的代码只是因为格式化工具而缩进的?请包括.OP正在使用的所有所需内容(好吧,它的python包装器),这当然是每个连接的设置,所以其余部分仍然有效。@Shawn谢谢,但不确定“其余部分…”是什么意思。我很高兴您同意大部分答案,但授权人实际上并不是为了实现访问权限,而是为了过滤和控制来自外部源的直接SQL的执行。如果实现了访问权限,那么这些权限可以应用于这样的SQL执行,但它们是不同的想法。根据OP自己的描述,我推测授权人的目的被误解了,OP的实现可能是多余的,因为OP可以控制自己的代码(没有传递外部SQL)。我们可以使用python@Tonystark您可以在Python中做任何您想做的事情。您可以要求密码,也可以添加访问权限等。但是,标准的、开放的、未加密的sqlite数据库文件格式不会更改。正如我已经回答的,任何其他实现sqlite库的应用程序都可以访问标准sqlite格式。。。除非数据库文件是加密的。但这是一个单独的问题,您应该首先在线研究Python。首先,请参见。