1 - Sqlite is very slow when its compared to other sql databases like Mysql
and Postgresql ..

2 - You need to use pagination , you are viewing using templates and not
generating an excel or csv file to pass all this data in one shot

3 - pythonanywhere.com basic account comes with limited resources , you may
look for alternatives , or request a higher plan

4 - if you adjust some mysql parameters you might have faster querying but
you may sacrifice another features so dont play with them unless you know
what you are doing

5 - consider use caching for the second request

On Fri, 7 Feb 2020, 6:57 pm Eric Kiser, <[email protected]> wrote:

> Okay so I've used django on two of my projects with the following criteria:
>
> Hosted @: PythonAnywhere
> Database: MySQL and SQLite
>
> PROBLEM: At first with a few hundred data the query is okay, but when I am
> querying 2,000 of data it takes 3 minutes to load it on a simple table.
> This is not normal because I've read that a thousand data shouldn't be a
> problem.
>
> Here are my codes:
>
> Models.py
> class Outgoing(models.Model):
>     base_in = models.ForeignKey('warehouse.Incoming', related_name='out',
> on_delete = models.SET_NULL, null=True)
>     trans_date = models.DateField('Date', default=timezone.now)
>     trans_type = models.CharField('Type', max_length=50, choices =
> OUTGOING_TYPE)
>     form_no = models.CharField('FORM No', max_length=20, default=0)
>     project_site = models.ForeignKey(ProjectSite,
> related_name='out_project_site', null=True, on_delete = models.SET_NULL)
>     released_by = models.ForeignKey(User, related_name='out_released_by',
> default='', on_delete = models.SET_NULL, null=True)
>     released_to = models.ForeignKey(User, related_name='out_released_to',
> blank=True, null=True, on_delete = models.SET_NULL)
>     released_out = models.ForeignKey(Outsider,
> related_name='outsider_released_to', blank=True, null=True, on_delete =
> models.SET_NULL)
>     unit = models.ForeignKey(UnitProfile, related_name='user_unit',
> blank=True, null=True, on_delete = models.SET_NULL)
>
>     quantity = models.DecimalField('Quantity', db_index=True,
> max_digits=20, decimal_places=2, default=0)
>     details = models.CharField('Details', max_length=200, default='')
>     attachment = models.FileField('Form', upload_to='incoming_form',
> blank=True)
>
>     create_date = models.DateTimeField('Date Created', auto_now_add=True)
>
>     def __str__(self):
>         return "%s" %(self.trans_date)
>
>     class Meta:
>         verbose_name = 'Outgoing'
>         verbose_name_plural = 'Outgoings'
>
>
> Views.py
> class OutgoingView(ListView):
>     model = Outgoing
>     template_name = 'warehouse/outgoing_page.html'
>     context_object_name = 'all_out'
>
>
> outgoing_page.html
>                                 <tbody>
>                                     {% for outgoing in daily_out %}
>                                     <tr>
>                                         <td class="text-truncate">{{
> outgoing.trans_date }}</td>
>                                         <td class="text-truncate">{{
> outgoing.trans_type }}</td>
>                                         <td class="text-truncate">{{
> outgoing.form_no }}</td>
>                                         <td class="text-truncate info">{{
> outgoing.base_in.item }}</td>
>                                         <td class="text-truncate
> danger">{{ outgoing.quantity|intcomma }}</td>
>                                         <td class="text-truncate">{{
> outgoing.project_site }}</td>
>                                         <td class="text-truncate">{{
> outgoing.unit }}</td>
>                                         <td class="text-truncate">{{
> outgoing.released_by }}</td>
>                                         <td class="text-truncate">{{
> outgoing.released_to }}</td>
>                                         <td class="text-truncate">{{
> outgoing.released_out }}</td>
>                                         <td class="text-truncate">{{
> outgoing.details }}</td>
>                                         <td class="text-truncate">
>                                             <i class="la la-pencil
> font-medium-3"></i>
>                                         </td>
>                                     </tr>
>                                     {% endfor %}
>                                 </tbody>
>
>
> What I did:
> - simplified my views, no ordering even coz I'm told sorting takes another
> hit on the database.
> - ask help from the guys at pythonanywhere thinking I might not have
> enough workers, they told me there's no problem with my account.
> - shift from SQLite to MySQL and still the same.
>
> Help would really be nice, thank you.
>
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/813e339d-e9ce-45f9-a391-a497ae5d3857%40googlegroups.com
> <https://groups.google.com/d/msgid/django-users/813e339d-e9ce-45f9-a391-a497ae5d3857%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAHV4E-ez9o9s-htFXjj16-U81VY%3DOWb2Y%3DFU6%2B7V%3DLV7JtD_-A%40mail.gmail.com.

Reply via email to