জ্যাঙ্গোর ম্যানেজ.পি দিয়ে সিএলআই থেকে কোনও ডাটাবেস সাফ করার সহজ উপায় কী?


84

আমি মাইএসকিউএল দিয়ে একটি ওয়েবসাইট তৈরি করতে জ্যাঙ্গো ব্যবহার করছি। এখন আমি যেহেতু শিখছি তাই আমাকে প্রায়শই মডেলটি পরিবর্তন করতে হবে তাই আমি চাই যে সমস্ত টেবিল সাফ হয়ে যায় এবং নতুন সারণী তৈরি হয়।

তবে syncdbবিদ্যমান টেবিলগুলিকে স্পর্শ করে না। এই সমস্যাটি হ্যান্ডেল করার কি আরও ভাল উপায় আছে?

উত্তর:


155

আপনি যদি ডেটা সম্পর্কে চিন্তা না করেন:

সেরা উপায় হ'ল ডাটাবেস ফেলে syncdbআবার চালানো । অথবা আপনি চালাতে পারেন:

জ্যাঙ্গো> = 1.5 এর জন্য

python manage.py flush

জ্যাঙ্গোর জন্য <1.5

python manage.py reset appname

( --no-inputইন্টারেক্টিভ প্রম্পটটি এড়িয়ে যাওয়ার জন্য আপনি কমান্ডের শেষে যুক্ত করতে পারেন ))

আপনি যদি ডেটা সম্পর্কে যত্ন নেন:

ডক্স থেকে:

সিঙ্কডিবি কেবলমাত্র এমন মডেলগুলির জন্য টেবিল তৈরি করবে যা এখনও ইনস্টল করা হয়নি। এটি ইনস্টলেশনের পরে কোনও মডেল শ্রেণিতে করা পরিবর্তনগুলির সাথে মেলে কখনও টেটার বিবৃতি জারি করবে না। মডেল ক্লাস এবং ডাটাবেস স্কিমার পরিবর্তনগুলি প্রায়শই কিছুটা অস্পষ্টতার সাথে জড়িত এবং সে ক্ষেত্রে জাজানোকে সঠিক পরিবর্তনগুলি অনুমান করতে হবে। প্রক্রিয়াটিতে সমালোচনামূলক ডেটা হারিয়ে যাওয়ার ঝুঁকি রয়েছে।

আপনি যদি কোনও মডেলটিতে পরিবর্তন করেছেন এবং ডাটাবেস টেবিলগুলিকে মেলে পরিবর্তন করতে চান তবে নতুন এসকিউএল কাঠামো প্রদর্শন করতে sql কমান্ডটি ব্যবহার করুন এবং পরিবর্তনগুলি কার্যকর করতে আপনার বিদ্যমান টেবিল স্কিমার সাথে এটি তুলনা করুন।

https://docs.djangoproject.com/en/dev/ref/django-admin/

তথ্যসূত্র: এফএকিউ - https://docs.djangoproject.com/en/dev/faq/models/#if-i-make-changes-to-a-model-how-do-i-update-the-database

লোকেরা দক্ষিণকেও প্রস্তাব দেয় ( http://south.aeracode.org/docs/about.html#key-features ) তবে আমি এটি চেষ্টা করি নি।


4
স্বয়ংক্রিয়ভাবে মাইগ্রেশন পরিচালনা করার জন্য দক্ষিণটি সত্যিই দুর্দান্ত। কিছুটা অভ্যস্ত হয়ে ওঠার চেষ্টা করে, তবে এটি বিকাশের সময় ডেটাবেসগুলি হ্রাস এবং পুনরায় পুনরুদ্ধার করতে অনেক ঝামেলা বাঁচায় এবং আপনার সাইটটি লাইভ হয়ে যাওয়ার পরে আপনাকে অবশ্যই এটির মূল্যবান ডেটা রাখার সময় ডিবি কাঠামো পরিবর্তন করতে হবে।
thepeer

11
রিসেট কম্যান্ড প্রপ্রেসিত । জাজানো 1.5 তে কমান্ডটি আপডেট করা হয়েছে flush। ইন্টারেক্টিভ প্রম্পটটি ব্যবহার python manage.py flushবা python manage.py flush --noinputএড়িয়ে যাওয়ার চেষ্টা করুন ।
Agconti

দক্ষিণ অবমূল্যায়ন করা হয়েছে । পড়ুন এখানে । এবং আপনার এখানে দেওয়া লিঙ্কটি ভাঙ্গা।
মুকেশ সাই কুমার

দেখে মনে হচ্ছে কমান্ডটি এখন ডক্সdjango-admin flush অনুসারে রয়েছে
টড

4

জাজানো এক্সটেনশনগুলি ব্যবহার করে , চলছে:

./manage.py reset_db

ডাটাবেস সারণি সাফ করবে, তারপরে চলছে:

./manage.py syncdb

এগুলি পুনরায় তৈরি করবে (দক্ষিণে আপনাকে জিনিসগুলিতে স্থানান্তর করতে বলতে পারে)।


4
@ বেকো প্রথমে এটি কার্যকর করুন: পাইপ ইনস্টল করুন
জ্যাঙ্গো

4

আমি মনে করি জাজানো ডক্সটি স্পষ্টভাবে উল্লেখ করেছে যে যদি অভিপ্রায়টি খালি ডিবি থেকে আবার শুরু করা (যা ওপি'র অভিপ্রায় বলে মনে হয়), তবে কেবল ডাটাবেসটি ড্রপ করে পুনরায় তৈরি করে পুনরায় রান করুন migrate(ব্যবহারের পরিবর্তে flush):

আপনি যদি খালি ডাটাবেস থেকে শুরু করে সমস্ত মাইগ্রেশন পুনরায় চালাতে চান তবে আপনার ডাটাবেসটি ড্রপ করে আবার তৈরি করতে হবে এবং তার পরিবর্তে মাইগ্রেশন চালানো উচিত।

সুতরাং ওপি'র ক্ষেত্রে আমাদের কেবল দরকার:

  1. মাইএসকিউএল থেকে ডাটাবেসটি ফেলে দিন
  2. ডাটাবেস পুনরুদ্ধার করুন
  3. চালান python manage.py migrate

0

দ্রুততম (ড্রপ এবং ডেটা সহ সমস্ত সারণী তৈরি করে):

./manage.py reset appname | ./manage.py dbshell

সতর্ক করা:

  • উইন্ডোজে সঠিকভাবে কাজ করতে পারে না।
  • কিছু পুরানো টেবিল ডিবিতে রাখতে পারে

4
resetইতিমধ্যে এসকিউএল চালায় তাই পাইপ দেওয়ার দরকার নেই dbshell। আপনি যদি sqlresetকমান্ডটি ব্যবহার করেন , তবে এটি কেবল এসকিউএল প্রিন্ট করবে যা আপনি কার্যকর করার জন্য শেলটি পাইপ করতে পারেন, তবে এটি একটি অপ্রয়োজনীয় পদক্ষেপ।
মাইকেল মায়ার

0

আপনি টেবিলের কাঠামোটি বিনষ্ট না করে কোনও টেবিলের সমস্ত ডেটা মুছতে জাজানো-ট্রান্সকেট লাইব্রেরি ব্যবহার করতে পারেন।

উদাহরণ:

  1. প্রথমে আপনার টার্মিনাল / কমান্ড লাইনটি ব্যবহার করে জ্যাঙ্গো-টার্নকেট ইনস্টল করুন:
pip install django-truncate
  1. আপনার INSTALLED_APPS ফাইলে "django_truncate" যুক্ত settings.pyকরুন:
INSTALLED_APPS = [
    ...
    'django_truncate',
]
  1. অ্যাপ্লিকেশন থেকে সারণীর সমস্ত ডেটা মুছতে আপনার টার্মিনালে এই কমান্ডটি ব্যবহার করুন।
python manage.py truncate --apps app_name --models table_name
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.