FAQ: Basisdata dan model¶
Bagaimana dapat Saya melihat permintaan SQL mentah sedang berjalan?¶
Pastikan pengaturan DEBUG
Django anda disetel ke True
. Lalu, lakukan ini:
>>> from django.db import connection
>>> connection.queries
[{'sql': 'SELECT polls_polls.id, polls_polls.question, polls_polls.pub_date FROM polls_polls',
'time': '0.002'}]
connection.queries
hanya tersedia jika DEBUG
adalah True
. Itu adalah daftar dari kamus-kamus dalam rangka menjalankan permintaan. Setiap kamus mempunyai berikut:
``sql`` -- The raw SQL statement
``time`` -- How long the statement took to execute, in seconds.
connection.queries
termasuk semua pernyataan SQL -- INSERTs, UPDATES, SELECT, dll. Setiap kali aplikasi anda mengenai basisdata, permintaan akan direkam.
Jika anda sedang menggunakan multiple databases, anda dapat menggunakan antarmuka sama pada setiap anggota dari kamus connections
:
>>> from django.db import connections
>>> connections['my_db_alias'].queries
Jika anda butuh membersihkan daftar permintaan secara manual pada titik manapun di fungsi anda, cukup panggil reset_queries()
, seperti ini:
from django.db import reset_queries
reset_queries()
Dapatkah Saya menggunakan Django dengan basisdata sudah ada?¶
Ya. Lihat memadukan dengan warisan basisdata.
Jika Saya membuat perubahan pada model, bagaimana Saya memperbaharui basisdata?¶
Lihatlah pada dukungan Django untuk schema migrations
.
Jika anda tidak keberatan membersihkan data, kegunaan manage.py
proyek anda mempunyai pilihan flush
untuk mengatur kembali basisdata ke keadaan nya dengan segera setelah migrate
dijalankan.
Apakah model Django mendukung primary key banyak kolom?¶
Tidak. Hanya primary key kolom-tunggal yang didukung.
Tetapi ini bukan sebuah masalah dalam praktiknya, karena tidak ada yang menghentikan anda dari menambahkan pembatas (menggunakan pilihan model unique_together
atau membuat pembatas secara langsung dalam basisdata anda), dan memaksa keunikan pada tingkatan itu. Primary-key kolom tunggal dibutuhkan untuk hal-hal seperti antarmuka admin untuk bekerja; sebagai contoh, anda butuh jalan mudah dari dapat menentukan sebuah obyek untuk disunting atau dihapus.
Apakah Django mendukung basisdata NoSQL?¶
Basisdata NoSQL tidak secara resmi didukung oleh Django itu sendiri. Ada, bagaimanapun, sejumlah proyek samping dan cabang yang mengizinkan fungsi NoSQL di Django, seperti Django non-rel.
Anda dapat juga melihat di halaman wiki yang mengobrolkan beberapa alternatif.
Bagaimana Saya menambah pilihan khusus-basisdata ke pernyataan CREATE TABLE saya, seperti menentukan MyISAM sebagai jenis tabel?¶
Kami mencoba menghidnari menambahkan kasus khusus di kode Django untuk menampung semua pilihan basisdata-khusus seperti jenis tabel, dll. Jika anda ingin menggunakan salah satu pilihan ini, buat perpindahan dengan operasi RunSQL
yang mengandung pernyataan ALTER TABLE
yang melakukan apa anda ingin lakukan.
Sebagai contoh, jika anda sedang menggunakan MySQL dan ingin tabel anda menggunakan jenis tabel MyISAM, gunakan SQL berikut:
ALTER TABLE myapp_mytable ENGINE=MyISAM;