Skip to main content

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 to 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:

https://github.com/kimetrica/django-binary-database-files/

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

django-single-table-db-storage-0.1.3.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file django-single-table-db-storage-0.1.3.tar.gz.

File metadata

File hashes

Hashes for django-single-table-db-storage-0.1.3.tar.gz
Algorithm Hash digest
SHA256 41a4ef6122ab2ff531ef55919447529b0645314e57c8af0063c6cc880a58f454
MD5 e3b2d0e806cf960adf19c537f5c60e0f
BLAKE2b-256 b7613ce318f2bbbed5998e2f84e9001bf60281c5a0091e4371d6705cbdada7b2

See more details on using hashes here.

File details

Details for the file django_single_table_db_storage-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for django_single_table_db_storage-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4a6e6e9b447ff10ba69885dadc40d4039461e887022f5553301d36cbcfb0eca8
MD5 19da7485fab8f27a12abe4bde72c3cbd
BLAKE2b-256 79b5c20a2583b25a04cb66cc5b1961b86fc81ea4a6992d16613c75bc7e788ea5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page