জ্যাঙ্গো: কীভাবে একটি জ্যাঙ্গো অ্যাপ্লিকেশন সম্পূর্ণরূপে আনইনস্টল করবেন?


109

ডেটাবেস অপসারণের মাধ্যমে সম্পূর্ণ একটি জ্যাঙ্গো অ্যাপ্লিকেশনটি সম্পূর্ণরূপে আনইনস্টল করার পদ্ধতি কী?


সেটিংস.পি ইনস্টল করা অ্যাপস থেকে সেই অ্যাপের নামটি সরিয়ে ফেলুন, তারপরে মূল ইউআরএল.পি ফাইল থেকে সেই অ্যাপ্লিকেশনটির যে কোনও লিঙ্ক সরিয়ে ফেলুন। তারপরে আপনি সেই অ্যাপটি নিরাপদে মুছতে পারেন
অসীম

আপনি ডাটাবেস রিসেট ব্যবহার SQLite এবং আপনি কিছু মনে না করেন উন্নয়নে হন, তাহলে, এটা ঠিক অ্যাপ্লিকেশন ফোল্ডারের মুছে ফেলুন এবং তারপর বিষয় db.sqlite3, এবং থেকে সরাতে INSTALLED_APPSমধ্যে settings.py?
কেভিন

উত্তর:


150
  1. জ্যাঙ্গো <1.7 এর একটি কার্যকর পরিচালনা কমান্ড রয়েছে যা আপনাকে একটি অ্যাপের জন্য সমস্ত টেবিলগুলি ফেলে দেওয়ার জন্য প্রয়োজনীয় এসকিউএল দেবে। দেখুন sqlclear ডক্স আরও তথ্যের জন্য। মূলত, দৌড়ানোর ফলে ./manage.py sqlclear my_app_nameআপনি এসকিউএল স্টেটমেন্ট পাবেন যা আপনার ডিবিতে অ্যাপের সমস্ত চিহ্ন থেকে মুক্তি পেতে কার্যকর করা উচিত। আপনাকে এখনও আপনার এসকিউএল ক্লায়েন্টে সেই বিবৃতিগুলি অনুলিপি এবং পেস্ট করতে হবে (বা পাইপ) করতে হবে। জ্যাঙ্গো ১.। এবং তার বেশি বয়সের জন্য ./manage.py migrate my_app_name zero( মাইগ্রেট ডক্সগুলি দেখুন) ব্যবহার করুন যা স্বয়ংক্রিয়ভাবে ডাটাবেস পরিষ্কার করে runs

  2. আপনার প্রকল্প থেকে অ্যাপটি সরাতে, আপনাকে যা করতে হবে তা হ'ল এটি INSTALLED_APPSআপনার প্রকল্পের থেকে সরিয়ে নেওয়া settings.py। জাজানো আর অ্যাপটি লোড করবে না will

  3. আপনি যদি আর অ্যাপ্লিকেশনটির ফাইলগুলি চারদিকে ঝুলতে চান না, তবে আপনার প্রকল্প ডিরেক্টরি বা এটি যেখানে রয়েছে তার পাইথনপথের অন্য স্থান থেকে অ্যাপ ডিরেক্টরিটি মুছুন।

  4. (alচ্ছিক) অ্যাপ্লিকেশনটি যদি মিডিয়া ফাইলগুলি, ক্যাশে ফাইলগুলি বা অন্য কোনও অস্থায়ী ফাইল সঞ্চয় করে থাকে তবে আপনি সেগুলি মুছতেও পারেন। এছাড়াও অ্যাপ্লিকেশন থেকে অচল হয়ে যাওয়া সেশন ডেটা সম্পর্কে সতর্ক থাকুন।

  5. (alচ্ছিক) আমি কোনও বাসি সামগ্রীর প্রকারগুলিও সরিয়ে ফেলব।

তাই ভালো.

from django.contrib.contenttypes.models import ContentType
for c in ContentType.objects.all():
    if not c.model_class():
        print "deleting %s"%c # print(f"deleting {c}") # for Python 3.6+
        c.delete()

5
দুর্দান্ত উত্তর, কেবলমাত্র একটি সংযোজন যা আমি করব: পাইপ আনইনস্টল করুন প্যাকেজ-নাম আপনার বন্ধু, আপনার পাইথনপথের চারপাশে ট্রলিংয়ের চেয়ে আরও সুন্দর।
ডেভজে

25
জাজানো ১. 1.-এ, আপনি মাইগ্রেশন ব্যবহার করলে, পদক্ষেপ 1 হবে ./manage.py migrate my_app_name zero। এবং এটি স্বয়ংক্রিয়ভাবে এসকিউএলও কার্যকর করবে।
নাথান

12
sqlclearজ্যাঙ্গো ১.৯-এ সরানো হয়েছে তাই এই উত্তরটি কেবল পূর্ববর্তী সংস্করণগুলির জন্যই ভাল। দেখুন: docs.djangoproject.com/en/1.10/releases/1.9/…
আখরুস

7
যদি মুছে ফেলা অ্যাপ্লিকেশনটিতে মাইগ্রেশন থাকে, যা অন্য অ্যাপের মাইগ্রেশনগুলির উপর নির্ভর করে, মাইগ্রেশন সিস্টেমটি তখন ভেঙে যাবে যখন দেখবে যে এই নির্ভরশীল স্থানান্তরগুলির আর অস্তিত্ব নেই। উপরের উত্তরটি ব্যবহার করার সময় সতর্কতা অবলম্বন করুন যদি অ্যাপটি মুছে ফেলা হয় তবে আপনার অ্যাপ্লিকেশনগুলির মধ্যে একটির মাইগ্রেশন ইতিহাসের নির্ভরতা।
ফিলিপ কিলিবারদা

1
এবং সম্পূর্ণতার জন্য, আপনাকে সাধারণত include("appname.urls")প্রকল্পটির কোনও রেফারেন্স সরিয়ে ফেলতে হবে urls.py
নিগেল 222

16
  1. আউট মন্তব্য settings.pyমধ্যে INSTALLED_APPSঅপ্রয়োজনীয় অ্যাপ্লিকেশনের লাইন
  2. সমস্ত ফোল্ডার __pycache__এবং migrateআপনার প্রকল্পে মুছুন
  3. মধ্যে অপ্রয়োজনীয় মডেল মুছুন models.py
  4. সমস্ত আমদানি লিঙ্ক views.py, admin.pyশেষ ইত্যাদি মুছুন
  5. urls.pyআপনার অপ্রয়োজনীয় অ্যাপ্লিকেশনটিতে সমস্ত লিঙ্কটি মুছে ফেলুন
  6. ডাটাবেসে অ্যাপের সাথে যুক্ত অযথা টেবিলগুলি মুছুন (আমি এটি সহায়তা প্রোগ্রাম "ভ্যালেন্টিনা স্টুডিও" দিয়ে করি)
  7. অ্যাপ্লিকেশন এর ফোল্ডার মুছুন
  8. কমান্ড লাইনে এটি করুন: python manage.py migrateএবংpython manage.py syncdb

3

জ্যাঙ্গো অ্যাপ্লিকেশনটি * .py ফাইলগুলির একটি "সেট" এবং একটি জ্যাঙ্গো-অ্যাপ-নামের একটি ডিরেক্টরি। সুতরাং আপনি সমস্ত * .py ফাইল সহ কেবল পুরো ফোল্ডারটি মুছতে পারেন

ডিবি থেকে টেবিলগুলি "অপসারণ" করতে আপনার ব্যবহার করা উচিত DELETE FROM <app-name_table-names>

তদ্ব্যতীত, আপনাকে রুট ডিরেক্টরিতে set.py থেকে লাইন উইগ অ্যাপ-নাম মুছতে হবে


ধরে নিই যে আপনি অন্য অ্যাপ্লিকেশনটির সাথে ডেটাবেস ভাগ করে নিচ্ছেন না আপনি কেবল সেটিংস.পাইয়ের নামযুক্ত ডিবি ফেলে দিতে পারেন।
joel3000

প্রতিটি অ্যাপ্লিকেশনের নিজস্ব ডিবি রয়েছে - খারাপ নয়
ভি-লাইট

3
@ ভি-লাইট প্রতিটি অ্যাপের নিজস্ব টেবিল থাকে এবং প্রতিটি প্রকল্পের নিজস্ব ডেটাবেস থাকে।
আলিরিজা সাভান্দ

2

আমি এই নিবন্ধটির পদক্ষেপগুলি সত্যই পছন্দ করি - এটি মাইগ্রেশন সমর্থন অন্তর্ভুক্ত ।

কোডের দুটি আপডেটে এটিকে মানিয়ে নেওয়ার প্রয়োজন হতে পারে - তবে আপনাকে যখন অনেকগুলি মোতায়েনের সাথে কাজ করতে হবে (যেমন: পরীক্ষার পর্যায়ে, বিটা সংস্করণ এবং উত্পাদন - আমার ক্ষেত্রে) তখন সত্যই সুরক্ষিত মনে হয়


2

আমার প্রসঙ্গে প্রকল্পগুলি বেশ কয়েকবার বিদ্যমান: আমার একটি বিকাশ ব্যবস্থা রয়েছে, কিছু দলের সঙ্গীদের একটি ডেভলপমেন্ট সিস্টেম রয়েছে, গ্রাহকের জন্য একটি মঞ্চ ব্যবস্থা এবং একটি উত্পাদন ব্যবস্থা রয়েছে। এর অর্থ আমি হাতে হাতে এসকিএল কমান্ডগুলি প্রয়োগ করতে চাই না। আমি এটি স্বয়ংক্রিয় করা চাই।

লক্ষ্য: অ্যাপ্লিকেশন এবং সমস্ত ডাটাবেস সারণী সরান।

পদক্ষেপ 1: অ্যাপটি খালি করুন তবে এটি ইনস্টল করুন

"মাইগ্রেশন" ফোল্ডার বাদে অ্যাপ্লিকেশন থেকে সমস্ত ফাইল সরিয়ে ফেলুন

এই আদেশটি কার্যকর করুন: manage.py makemigrations -n drop_all_tables my_app_to_remove

ডিরেক্টরিটি এখন এর মতো দেখাচ্ছে:

my_app_to_remove/
my_app_to_remove/__init__.py
my_app_to_remove/migrations
my_app_to_remove/migrations/0001_initial.py
my_app_to_remove/migrations/....
my_app_to_remove/migrations/0030_drop_all_tables.py
my_app_to_remove/migrations/__init__.py

my_app_to_remove"সেটিংস.পি" ফাইলটিতে ছেড়ে দিন ।

পদক্ষেপ 2: পরিবর্তনগুলি স্থাপন করুন

সমস্ত প্রকল্প আপডেট করুন। টিম সাথীদের তাদের প্রকল্প আপডেট করতে এবং মাইগ্রেশন চালাতে বলুন।

পদক্ষেপ 3: সেটিংস.পি থেকে "আমার_অ্যাপ_ট_মরিভ" সরান

এখন সেটিংস.পি থেকে "আমার_অ্যাপ_ টো_মোভ" সরান এবং আবার মোতায়েন করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.