Bases: SessionStorage
SQLiteStorge 会把 Session 数据储存在一个 SQLite 数据库文件中 ::
import zgrobot
from zgrobot.session.sqlitestorage import SQLiteStorage
session_storage = SQLiteStorage
robot = zgrobot.ZgRoBot(token="token", enable_session=True,
session_storage=session_storage)
:param filename: SQLite数据库的文件名, 默认是 zgrobot_session.sqlite3
Source code in zgrobot/session/sqlitestorage.py
| class SQLiteStorage(SessionStorage):
"""
SQLiteStorge 会把 Session 数据储存在一个 SQLite 数据库文件中 ::
import zgrobot
from zgrobot.session.sqlitestorage import SQLiteStorage
session_storage = SQLiteStorage
robot = zgrobot.ZgRoBot(token="token", enable_session=True,
session_storage=session_storage)
:param filename: SQLite数据库的文件名, 默认是 ``zgrobot_session.sqlite3``
"""
def __init__(self, filename='zgrobot_session.sqlite3'):
self.db = sqlite3.connect(filename, check_same_thread=False)
self.db.text_factory = str
self.db.execute(__CREATE_TABLE_SQL__)
def get(self, id):
"""
根据 id 获取数据。
:param id: 要获取的数据的 id
:return: 返回取到的数据,如果是空则返回一个空的 ``dict`` 对象
"""
session_json = self.db.execute(
"SELECT value FROM ZgRoBot WHERE id=? LIMIT 1;", (id, )
).fetchone()
if session_json is None:
return {}
return json_loads(session_json[0])
def set(self, id, value):
"""
根据 id 写入数据。
:param id: 要写入的 id
:param value: 要写入的数据,可以是一个 ``dict`` 对象
"""
self.db.execute(
"INSERT OR REPLACE INTO ZgRoBot (id, value) VALUES (?,?);",
(id, json_dumps(value))
)
self.db.commit()
def delete(self, id):
"""
根据 id 删除数据。
:param id: 要删除的数据的 id
"""
self.db.execute("DELETE FROM ZgRoBot WHERE id=?;", (id, ))
self.db.commit()
|
delete(id)
根据 id 删除数据。
:param id: 要删除的数据的 id
Source code in zgrobot/session/sqlitestorage.py
| def delete(self, id):
"""
根据 id 删除数据。
:param id: 要删除的数据的 id
"""
self.db.execute("DELETE FROM ZgRoBot WHERE id=?;", (id, ))
self.db.commit()
|
get(id)
根据 id 获取数据。
:param id: 要获取的数据的 id
:return: 返回取到的数据,如果是空则返回一个空的 dict
对象
Source code in zgrobot/session/sqlitestorage.py
| def get(self, id):
"""
根据 id 获取数据。
:param id: 要获取的数据的 id
:return: 返回取到的数据,如果是空则返回一个空的 ``dict`` 对象
"""
session_json = self.db.execute(
"SELECT value FROM ZgRoBot WHERE id=? LIMIT 1;", (id, )
).fetchone()
if session_json is None:
return {}
return json_loads(session_json[0])
|
set(id, value)
根据 id 写入数据。
:param id: 要写入的 id
:param value: 要写入的数据,可以是一个 dict
对象
Source code in zgrobot/session/sqlitestorage.py
| def set(self, id, value):
"""
根据 id 写入数据。
:param id: 要写入的 id
:param value: 要写入的数据,可以是一个 ``dict`` 对象
"""
self.db.execute(
"INSERT OR REPLACE INTO ZgRoBot (id, value) VALUES (?,?);",
(id, json_dumps(value))
)
self.db.commit()
|