একা মডেলের জন্য জ্যাঙ্গো ডাম্প ডেটা?


144

আমি সম্পাদন করতে পারবেন dumpdataমধ্যে জ্যাঙ্গো কেবলমাত্র একটি মডেল, বরং পুরো অ্যাপ্লিকেশন তুলনায়, এবং যদি তাই হয়, কিভাবে?

একটি অ্যাপ্লিকেশন জন্য এটি হবে:

python manage.py dumpdata myapp

তবে আমি কিছু নির্দিষ্ট মডেল চাই যেমন "myapp.mymodel" ফেলে দেওয়া উচিত। কারণটি হ'ল, আমার কাছে একই অ্যাপটিতে কিছু বিশাল, 3 মিলিয়ন রেকর্ড প্লাস, ডেটাসেট রয়েছে যা আমি পছন্দ করতে চাই না like


1
আমি আপনার প্রশ্ন বুঝতে সহজ মনে করি না। আপনি আপনার ডাটাবেসে একটি এসকিউএল ডাম্প লোড করতে চান? অথবা আপনি কোনও মডেলের উদাহরণস্বরূপ কিছু স্ট্রিং () স্ট্রিং () করতে চান?
লিওনার্ড এহেনফ্রিড

উত্তর:


245

সংস্করণ ১.১ এবং তার চেয়েও বড় হিসাবে, জ্যাঙ্গো dumpdataম্যানেজমেন্ট কমান্ড আপনাকে স্বতন্ত্র টেবিল থেকে ডেটা ফেলে দিতে দেয়:

./manage.py dumpdata myapp1 myapp2.my_model

আপনি কমান্ড লাইনে একাধিক অ্যাপস এবং মডেলগুলি পৃথক করতে পারেন। এখানে প্রচলিত সংজ্ঞা:

django-admin dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]

17
গাথ, পোস্টে নেতিবাচক ভোটটি বুঝতে পারি নি যা প্রায় 2 বছরের পুরানো। উপরোক্ত কোড এমনকি v1.1 সঙ্গে সূক্ষ্ম কাজ করে। নতুন প্রকাশে নতুন বৈশিষ্ট্য পুরানো উত্তরগুলিকে অবৈধ করে না।
সহজভাবে

1
এবং আমি এই অ্যাপ্লিকেশনটির অন্য কোনও উদাহরণে এই ডেটাটি যুক্ত করব কীভাবে ?.
aguilarpgc

1
মানুষের পঠনযোগ্য --indent 4dumpdata
জসনটি

103

যেমনটি উল্লেখ করা হয়েছে, আপনি জাজানো ০.০ তে একটি ম্যানেজ.পি কমান্ডের মাধ্যমে এটি করতে পারবেন না। তবে আপনি JSON ফাইল রফতানি করতে কোনও স্ক্রিপ্ট ব্যবহার করতে পারেন এবং এটি ব্যবহার করে লোড করতে পারেন loaddata:

from django.core import serializers
from myproject.myapp import models
data = serializers.serialize("json", models.MyModel.objects.all())
out = open("mymodel.json", "w")
out.write(data)
out.close()

4
এটি একটি দুর্দান্ত স্ক্রিপ্ট কারণ আপনি চাইলে আপনি আরও বেশি দানাদার পেতে পারেন। আপনি যদি পরিবর্তে উপরের লাইনে একটি .filter (...) করেন তবে আপনি যে নির্দিষ্ট সুনির্দিষ্ট রেকর্ড চান তা ফেলে দিতে পারেন।
Gringo Suave

1
নিস! অবশ্যই এইভাবে সূক্ষ্ম নিয়ন্ত্রণ।
লুইস আর্টোলা

9

জ্যাঙ্গো মডেল থেকে জেসন ফর্ম্যাটে সমস্ত ডেটা নিন।

বাক্য গঠন:

python manage.py dumpdata app_name.model_name

জন্য উদাহরণস্বরূপ group_permission মডেল থেকে তথ্য যা জ্যাঙ্গো এ ডিফল্ট প্রমাণীকরণ অ্যাপ্লিকেশানে রক্ষিত ডাম্পিং।

python manage.py dumpdata auth.group_permission

আউটপুট জন্য কনসোল দেখুন


6

আমি মনে করি আপনার প্রশ্নের সমাধানটি আপনার কাছে ছিল। আপনি এটির মতো পৃথক মডেলটি ফেলে দিতে পারেন:

./manage.py dumpdata myapp.my_model

আমি পোস্ট করার আগে এটি চেষ্টা করেছিলাম। ভাগ্য ছিল না। আমি জাজানো 1.0 এ আছি। এছাড়াও myapp.models.mymodel চেষ্টা করেছেন?
তালিকাভুক্ত

4

সাফল্যের জন্য আমাকে এটি দু'বার বলতে হয়েছিল এবং মডেলটি দু'বার উল্লেখ করতে হয়েছিল, যেমন:

./manage.py dumpdata myapp2.my_model myapp2.my_model

আমি যদি শুধু বলেছি

./manage.py dumpdata myapp2 myapp2.my_model

আমি আমার_পডেলটি নির্দিষ্ট করে দিলেও, মাইএপ 2-তে সমস্ত মডেলগুলি নিয়ে প্লাবিত হয়েছি।


1

কাজের ভিত্তিতে আপনি অন্য অ্যাপ্লিকেশন তৈরি করতে পারেন এবং মডেলটি অনুলিপি করতে পারেন তবে db_table মেটা বিকল্পের সাহায্যে বিদ্যমান টেবিলের দিকে এটি নির্দেশ করতে পারেন। তারপরে আপনি নতুন অ্যাপ্লিকেশনটিতে অনুলিপি করেছেন এমন মডেলগুলি সরিয়ে ফেলতে পারেন। আপনার বিদ্যমান অ্যাপ্লিকেশনটি প্রভাবিত হবে না।


1

আমি একটি পরিচালনা কমান্ড তৈরি করেছি প্রতি মডেল ভিত্তিতে একটি ফিক্সচার জেনারেট করে। ফিক্সচার চালিয়ে উত্পন্ন করা যেতে পারে:

./manage generate_fixtures app.model.MyModel --file=dump/MyModel.json

কোডটি এখানে: https://gist.github.com/2394883


1

নির্দিষ্ট ফাইলটিতে এটি লিখতে:

python manage.py dumpdata app_label.ModelName app_label.ModelName2 > fixtures/specic.json
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.