Provides a Django storage implementation that uses a single database table.
Project description
This Python package provides a Django storage implementation that uses a single database table.
Django developers may find this package may be most helpful for use in their test and prototype environments. This package may also be useful in launching small-scale projects/environments quickly without needing additional infrastructure setup.
WARNING: For production applications, please consider using a CDN instead of this package, as it is not a good practice to serve files from a database. Website performance will suffer! Please see the section "Alternatives" below for performant and scalable storage options.
Features / Benefits
- Easy to install and configure.
- Serve files properly when there are multiple django servers under a load balancer.
- Files persist in database when application server is rebuilt (as long as database is not hosted on the application server).
- In unit testing scenarios, created files can be automatically "rolled back" out of existence if the unit test uses a transaction, which is how
django.test.TestCase
works.
Installation
pip install django-single-table-db-storage
Setup
In your django settings file, add 'django_single_table_db_storage'
to INSTALLED_APPS
.
INSTALLED_APPS = [
...
'django_single_table_db_storage',
...
]
Also in your django settings file, set up the default storage. It is recommended that you add a TODO to remind yourself to use a better storage in the future.
# TODO: As this project scales, a CDN or S3-compatible storage for production
# might be a better solution.
DEFAULT_FILE_STORAGE = 'django_single_table_db_storage.storage.SingleTableDbFileStorage'
In your django settings file, you should determine the default accesibility of the files that are uploaded.
DJANGO_SINGLE_TABLE_DEFAULT_PUBLIC = True # or set it to False. The default is False.
Mount the URLs where you want in your urls.py
file.
urlpatterns = [
...
path('files/', include('django_single_table_db_storage.urls')),
....
]
Run the database migrations to create the table.
./manage.py migrate
...And now your environment is set to use the file storage.
Alternatives
You can find other file storage alternatives for Django here:
https://djangopackages.org/grids/g/storage-backends/
This package contains a similar and possibly better implementation to this library, depending on your use case and license that you prefer:
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django-single-table-db-storage-0.1.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7832ec3338014782ef5a1e07b640425f6ee76c6d529fa7321b814b17e255f988 |
|
MD5 | 664f9c15c2a811720c623ba88ae40f3b |
|
BLAKE2b-256 | 9466acab7aba70ced24cce7da9abebdd9f5a48f1257acc8c06c89c469d463283 |
Hashes for django_single_table_db_storage-0.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0aa01fc408199caed206ad5a635923ff6cdb0bd6a5a60f0befc55be6b8c9264f |
|
MD5 | ba9af26c7d074830c1e2428d0e418b82 |
|
BLAKE2b-256 | 6e578ee3b7db6a82754a2ed4e1dc88b57c87a57d01773b1c60f265b54d914942 |