gpt4 book ai didi

python - 如何使用 Python 连接到 protected Sqlite3 数据库

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

我创建了一个 SQLite3 数据库,并通过应用程序 DB browser for SQLite 使用密码(“测试”)对其进行保护。为了通过 Python 连接到我的数据库,我需要提供密码,但我不知道如何做到这一点。我尝试了以下代码:

conn=sqlite3.connect("mydatabase.db", Password="test")
cur=conn.cursor()

编辑:

我的 SQLite3 数据库已使用 SQLCipher 加密(参见图片)。 enter image description here如果我运行以下代码:

conn=sqlite3.connect("mydatabase.db")
cur=conn.cursor()

我收到此错误:

sqlite3.DatabaseError: file is encrypted or is not a database

如何传递密码以便通过 Python 连接我的 db

编辑2

这里是我试图实现的目标的简要总结。我正在使用 Python 3 开发一个应用程序,需要预先填充的数据库,但该数据库需要使用密码进行保护。经过广泛的研究,通过 Python 3 连接加密的 SQLite3 数据库似乎很复杂。存在调用 pysqlcipher 的库,但仅适用于 Python 2.7。我的下一个问题可能太宽泛,我提前道歉。是否存在另一个可移植数据库,允许我使用密码保护它并仍然可以访问 Python?为了解决我的问题,我想到的另一个想法是使用 zipfile 库。这个link提到 zipfile 模块不支持加密,但不清楚加密是指 SQLite3 数据库还是 zip 文件。这个想法是将我未 protected DB 压缩到 protected zip 文件中,因为我似乎可以做到这一点( link )。这次编辑的目的是获得关于如何解决我的问题的新想法。谢谢

最佳答案

如果你的数据库是用SqlCipher加密的,你需要在你的SO中安装sqlcipherWindows:Download

Linux:sudo pacman -S sqlcipher

sudo apt-get install sqlcipher

需要 pysqlcipher3 库后:pip install pysqlcipher3

参见:https://github.com/rigglemania/pysqlcipher3

我的示例代码是:

from pysqlcipher3 import dbapi2 as sqlite3


class Database(object):
def __init__(self, dbname):
self.dbname = dbname

def connDB(self):
self.conn = sqlite3.connect(self.dbname)
self.cursor = self.conn.cursor()
self.cursor.execute("PRAGMA key='mypassword'")

def createDB(self):
self.connDB()
self.cursor.execute(
'''
CREATE TABLE IF NOT EXISTS users (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
login TEXT NOT NULL,
passwd TEXT);
'''
)

self.cursor.execute(
'''
INSERT INTO users (name, login, passwd)
VALUES ("Admininstrator", "admin", "12345")
'''
)
self.conn.commit()
self.conn.close()

def queryDB(self, sql):
self.connDB()
self.cursor.execute(sql)

if sql[0:6].lower() == 'select':
result = self.cursor.fetchall()
self.conn.close()
return result
else:
self.conn.commit()
self.conn.close()

关于python - 如何使用 Python 连接到 protected Sqlite3 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50381616/

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