मुझे डमी प्रविष्टियों (लगभग 200+) के समूह के साथ अपने डेटाबेस को पॉप्युलेट करने की आवश्यकता है ताकि मैं अपने द्वारा बनाए गए व्यवस्थापक इंटरफ़ेस का परीक्षण कर सकूं और मैं सोच रहा था कि कोई बेहतर तरीका है या नहीं इसे करने के लिए। मैंने कल अपने दिन का बेहतर हिस्सा हाथ से भरने की कोशिश की (यानी इस माय_मोडेल (शीर्षक = "asdfasdf", field2 = "laksdj" ...) के गुच्छा में "x में रेंज के लिए" 0,200): "loops) और छोड़ दिया क्योंकि यह जिस तरह से मैं उम्मीद करता था काम नहीं किया। मुझे लगता है कि this मुझे उपयोग करने की आवश्यकता है, लेकिन क्या आपको इस काम के लिए डेटाबेस में मौजूदा (मौजूदा) डेटा रखने की आवश्यकता नहीं है?Django - परीक्षण उद्देश्यों के लिए डेटाबेस को पॉप्युलेट करना
उत्तर
चेक इस एप्लिकेशन
https://github.com/aerosol/django-dilla/
मान लीजिए कि आप अपने ब्लॉग आवेदन लिखा करते हैं (ओह, हाँ, अपने पसंदीदा!) Django में। यूनिट परीक्षण ठीक हो गए, और सबकुछ बेहद तेज़ चलता है, यहां तक कि उन ओआरएम से उत्पन्न अति-लंबे प्रश्न भी। आपने कई वर्गीकृत पोस्ट जोड़े हैं और यह अभी भी एक चट्टान के रूप में स्थिर है। आप पूरी तरह से सुनिश्चित हैं कि ऐप कुशल है और लाइव तैनाती के लिए तैयार है। सही? गलत।
यह वही चीज़ है जो मैं ढूंढ रहा था। बहुत बहुत धन्यवाद! – cornjuliox
@Eeyore: आपका जवाब मुझे सोने नहीं देगा। – misterte
आप इस उद्देश्य के लिए फिक्स्चर का उपयोग कर सकते हैं, और loaddata प्रबंधन आदेश।
एक दृष्टिकोण यह ऐसा करना है।
अपना परीक्षण डेटाबेस तैयार करें।
डेटाबेस के JSON निर्यात को बनाने के लिए डंपडाटा का उपयोग करें।
इसे अपने आवेदन की
fixtures
निर्देशिका में रखें।इस "स्थिरता" को लोड करने के लिए अपने यूनिट परीक्षण लिखें।
मुझे बस कुछ विवरण जोड़ना पड़ा। –
मुझे यकीन नहीं है कि आपको किसी भी क्रमिकरण की आवश्यकता क्यों है। जब तक आप अपने परीक्षण डेटाबेस को इंगित करने के लिए अपनी Django settings.py फ़ाइल सेट अप करते हैं, तब तक परीक्षण डेटाबेस को पॉप्युलेट करना मॉडल को सहेजने से ज्यादा कुछ नहीं होना चाहिए।
for x in range(0, 200):
m = my_model(title=random_title(), field2=random_string(), ...)
m.save()
ऐसा करने के बेहतर तरीके हैं, लेकिन यदि आप त्वरित परीक्षण सेट चाहते हैं, तो यह तरीका है।
और आप खोल के संदर्भ में चल रहे हैं, है ना? 'python manage.py shell' – hughdbrown
Django fixturessyncdb
पर डेटा आयात करने के लिए एक तंत्र प्रदान करता है। हालांकि, यह प्रारंभिक डेटा प्रचार करना पाइथन कोड के माध्यम से अक्सर आसान होता है। आपके द्वारा रूपरेखा की जाने वाली तकनीक को सिंकडीबी या प्रबंधन कमांड के माध्यम से काम करना चाहिए। उदाहरण के तौर पर syncdb के माध्यम से, my_app/management.py
में:
def init_data(sender, **kwargs):
for i in range(1000):
MyModel(number=i).save()
signals.post_syncdb.connect(init_data)
या, एक management commandmyapp/management/commands/my_command.py
में:
from django.core.management.base import BaseCommand, CommandError
from models import MyModel
class MyCommand(BaseCommand):
def handle(self, *args, **options):
if len(args) > 0:
raise CommandError('need exactly zero arguments')
for i in range(1000):
MyModel(number=i).save()
फिर आप एक दृढ़ करने के लिए इस डेटा निर्यात कर सकते हैं, या प्रबंधन आदेश का उपयोग कर आयात करना जारी। यदि आप syncdb
सिग्नल का उपयोग करना जारी रखना चुनते हैं, तो आप कॉल पर डेटा आयात करने से रोकने के लिए सशर्त रूप से init_data
फ़ंक्शन चला सकते हैं। जब एक स्थिरता पर्याप्त नहीं होती है, तो मैं व्यक्तिगत रूप से दोनों करना चाहता हूं: डेटा आयात करने के लिए प्रबंधन कमांड बनाएं, लेकिन पहले syncdb
आमंत्रण स्वचालित रूप से आयात करें। इस तरह, तैनाती अधिक स्वचालित है लेकिन मैं अभी भी प्रारंभिक डेटा में आसानी से संशोधन कर सकता हूं और आयात को फिर से चला सकता हूं।
एप्लिकेशन स्वीकार किए जाते हैं जवाब द्वारा सिफारिश नहीं रह गया है बनाए रखा जा रहा है लेकिन django-बीज एक स्थानापन्न के रूप उपयोग किया जा सकता है:
मैं तुम्हारे पास django-autofixtures की सिफारिश करेंगे। मैंने django_seed और django-autofixtures दोनों की कोशिश की, लेकिन django_seed में अद्वितीय कुंजी के साथ बहुत सारे मुद्दे हैं। django-autofixtures डेटाबेस को भरते समय अद्वितीय, प्राथमिक और अन्य डीबी बाधाओं का ख्याल रखता है
- 1. https केवल परीक्षण उद्देश्यों के लिए भी?
- 2. परीक्षण उद्देश्यों के लिए अनुकरण एसएसएच सर्वर
- 3. शैक्षणिक उद्देश्यों के लिए सार्वजनिक SQL डेटाबेस
- 4. Django परीक्षण डेटाबेस UTF8
- 5. Django परीक्षण मौजूदा डेटाबेस का उपयोग करने के लिए
- 6. रेल - विकास डेटा के साथ परीक्षण डेटाबेस पॉप्युलेट करें
- 7. लैरवेल माइग्रेशन फ़ाइल में डेटाबेस को पॉप्युलेट करना
- 8. डेटाबेस को पॉप्युलेट करने के लिए एक-ऑफ ग्रिल स्क्रिप्ट
- 9. अंतरराष्ट्रीय और बहुभाषी उद्देश्यों के लिए डेटाबेस मॉडलिंग
- 10. स्थानीय परीक्षण उद्देश्यों के लिए HTTPS कैसे सेट अप करें?
- 11. क्या परीक्षण डेटा को पॉप्युलेट करने के लिए .NET के लिए कोई ढांचा है?
- 12. AndroidAnnotations के साथ परीक्षण उद्देश्यों के लिए मोक्स इंजेक्ट करना संभव है?
- 13. Django परीक्षण
- 14. विकास उद्देश्यों के लिए डमी एसएमटीपी सर्वर
- 15. एंड्रॉइड - दो उद्देश्यों के लिए प्रसारण रिसीवर पंजीकृत करना?
- 16. वैध उद्देश्यों के लिए पॉलिमॉर्फिक कोड का उपयोग करना?
- 17. django परीक्षण डेटाबेस को स्वचालित रूप से कैसे नष्ट करें
- 18. एसक्यूएल सर्वर: ऑडिटिंग उद्देश्यों के लिए "एप्लिकेशन नाम" संपत्ति को संशोधित करना
- 19. परीक्षण उद्देश्यों के लिए धीमी प्रतिक्रिया समय अनुकरण करने के लिए nginx का उपयोग
- 20. एक पाइथन शब्दकोश को पॉप्युलेट करना
- 21. परीक्षण के दौरान Django टेस्ट डेटाबेस खाली दिखता है
- 22. पीडीएफ फाइल को पॉप्युलेट करना - पायथन
- 23. Django परीक्षण
- 24. एक विविध डेटाबेस परीक्षण वातावरण स्थापित करना
- 25. परीक्षण उद्देश्यों के लिए आधार नियंत्रक निर्भरता इंजेक्शन को कैसे हल करें?
- 26. Django: डेटाबेस डिज़ाइन के लिए सर्वोत्तम अभ्यास
- 27. django डेटाबेस
- 28. django परीक्षण
- 29. Django: विभिन्न डेटाबेस से डेटा प्राप्त करना
- 30. Django डेटाबेस
आप क्रमबद्ध नहीं करना चाहते हैं। आप शेल में चलकर प्रारंभिक डेटा बनाना चाहते हैं, उदाहरणों को सहेज सकते हैं, और उसके बाद डेटाबेस को लोड करने के लिए जेएसएन जैसे प्रारूप में एक स्थिरता में निर्यात करना चाहते हैं: 'python manage.py dumpdata --format = json --indent = 4 appname' @ मैथ्यू शिनकेल इस पर सबसे नज़दीक है। – hughdbrown