Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pengurutan Alami Kueri Django

Sejauh yang saya ketahui tidak ada solusi Django generik untuk ini. Anda dapat mengurangi penggunaan memori dan membatasi kueri db Anda dengan membangun struktur pencarian id/question_code

from natsort import natsorted
question_code_lookup = Question.objects.values('id','question_code')
ordered_question_codes = natsorted(question_code_lookup, key=lambda i: i['question_code'])

Dengan asumsi Anda ingin membuat halaman hasil, Anda kemudian dapat mengiris kode_pertanyaan_pesanan, lakukan kueri lain untuk mengambil semua pertanyaan yang Anda perlukan, urutkan sesuai dengan posisinya di irisan itu

#get the first 20 questions
ordered_question_codes = ordered_question_codes[:20]
question_ids = [q['id'] for q in ordered_question_codes]
questions = Question.objects.filter(id__in=question_ids)
#put them back into question code order
id_to_pos = dict(zip((question_ids), range(len(question_ids))))
questions = sorted(questions, key = lambda x: id_to_pos[x.id])

Jika struktur pencarian masih menggunakan terlalu banyak memori, atau terlalu lama untuk menyortir, maka Anda harus membuat sesuatu yang lebih maju. Ini tentu saja tidak akan menskalakan dengan baik ke kumpulan data yang besar




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan mysql untuk menemukan semua baris yang memiliki nilai yang sama dengan baris lain

  2. Permintaan MYSQL mengembalikan 'resource id#12 alih-alih nilai numerik yang seharusnya dikembalikan

  3. Bagaimana cara memperbaiki kode kesalahan MySQL 8:1525 dan 1292?

  4. heroku rake db:migrate ERROR gem install activerecord-mysql-adapter

  5. Salin/duplikat database tanpa menggunakan mysqldump