- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个 SQLite3
数据库,并通过应用程序 DB browser for SQLite
使用密码(“测试”)对其进行保护。为了通过 Python 连接到我的数据库,我需要提供密码,但我不知道如何做到这一点。我尝试了以下代码:
conn=sqlite3.connect("mydatabase.db", Password="test")
cur=conn.cursor()
编辑:
我的 SQLite3
数据库已使用 SQLCipher
加密(参见图片)。 如果我运行以下代码:
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/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!