Session files are now using sqlite3

Lonami 2017-12-28 16:34:11 +01:00
parent 6bac2fd65b
commit 8408faacfd

@ -1,14 +1,14 @@
The first parameter you pass the the constructor of the `TelegramClient` is the `session`, and defaults to be the session name (or full path). That is, if you create a `TelegramClient('anon')` instance and connect, an `anon.session` file will be created on the working directory.
These JSON session files contain the required information to talk to the Telegram servers, such as to which IP the client should connect, port, authorization key so that messages can be encrypted, and so on.
These database files using `sqlite3` contain the required information to talk to the Telegram servers, such as to which IP the client should connect, port, authorization key so that messages can be encrypted, and so on.
These files will by default also save all the input entities that you've seen, so that you can get information about an user or channel by just their ID. Telegram will **not** send their `access_hash` required to retrieve more information about them, if it thinks you have already seem them. For this reason, the library needs to store this information offline.
The library will by default too save all the entities (users with their name, username, chats and so on) **in memory**, not to disk, so that you can quickly access them by username or phone number. This can be disabled too. Run `help(client.session.entities)` to see the available methods (or `help(EntityDatabase)`).
The library will by default too save all the entities (chats and channels with their name and username, and users with the phone too) in the session file, so that you can quickly access them by username or phone number.
If you're not going to work without updates, or don't need to cache the `access_hash` associated with the entities' ID, you can disable this by setting `client.session.save_entities = False`.
If you're not going to work with updates, or don't need to cache the `access_hash` associated with the entities' ID, you can disable this by setting `client.session.save_entities = False`, or pass it as a parameter to the `TelegramClient`.
If you don't want to save the files as JSON, you can also create your custom `Session` subclass and override the `.save()` and `.load()` methods. For example, you could save it on a database:
If you don't want to save the files as a database, you can also create your custom `Session` subclass and override the `.save()` and `.load()` methods. For example, you could save it on a database:
```python
class DatabaseSession(Session):
def save():