ডাটাবেস থেকে জ্যাঙ্গো মডেল তৈরি করা সম্ভব?


91

আমি বাড়িতে জ্যাঙ্গো এবং জ্যাঙ্গো ওআরএমের সাথে জগাখিচুড়ি করছি, এবং আমি বলতে পেরেছি, আমি মনে করি এটি সহজেই ব্যবহারের সুবিধার দিক থেকে সেরা is

তবে আমি ভাবছিলাম যে এটি "বিপরীত" ব্যবহার করা সম্ভব কিনা?

মূলত আমি যা করতে চাই তা হ'ল একটি বিদ্যমান ডাটাবেস স্কিমা থেকে জাজানো মডেল তৈরি করা (এমন একটি প্রকল্প থেকে যা জাজানো ব্যবহার করে না এবং এটি বেশ পুরানো)।

এটা কি সম্ভব?

আপডেট: প্রশ্নে থাকা ডাটাবেসটি ওরাকল

উত্তর:


107

হ্যাঁ, inspectdbকমান্ডটি ব্যবহার করুন :

inspectdb

DATABASE_NAME সেটিংস দ্বারা নির্দেশিত ডাটাবেসে ডাটাবেস টেবিলগুলি সনাক্ত করে এবং স্ট্যান্ডার্ড আউটপুটে একটি জ্যাঙ্গো মডেল মডিউল (একটি মডেল.পি ফাইল) আউটপুট দেয়।

আপনি যদি জ্যাঙ্গো ব্যবহার করতে চান এমন কোনও উত্তরাধিকার ডাটাবেস থাকে তবে এটি ব্যবহার করুন। স্ক্রিপ্টটি ডাটাবেসটি পরীক্ষা করবে এবং এর মধ্যে প্রতিটি সারণির জন্য একটি মডেল তৈরি করবে।

আপনি যেমনটি আশা করতে পারেন, তৈরি করা মডেলগুলির সারণীর প্রতিটি ক্ষেত্রের জন্য একটি বৈশিষ্ট্য থাকবে। নোট করুন যে ইন্সপেক্টডিবির ক্ষেত্রের নাম আউটপুটটিতে কয়েকটি বিশেষ মামলা রয়েছে:

[...]


4
এই তথ্যটি পড়তে পড়তে বলা হয় যে এটি মাইএসকিএল, স্ক্লাইট এবং পোস্টগ্র্যাস্কিলের জন্য সমর্থিত। দুঃখের সাথে আমি যে ডাটাবেসটি ব্যবহার করার চেষ্টা করছি সেটি হচ্ছে ওরাকল :(
টিএম।

ওফ, আমি বিশ্বাস করি না যে জ্যাঙ্গো এই মুহুর্তে ওরাকল, উভয় সামনে বা পিছনের দিকে ভাল সমর্থন করেছে: /
আলবার্তোপিএল

4
জ্যাঙ্গোতে প্রায় সমস্ত বৈশিষ্ট্য রয়েছে যার মাধ্যমে কেউ ভাবতে পারে। এটি এখনও কয়েক বছর ব্যবহারের পরেও আমাকে অবাক করে।
ডিভিক

আমি নিশ্চিত নই তবে ... সম্ভবত আপনার উল্লেখ করা উচিত যে লিঙ্কটি devসংস্করণটিকে বোঝায় (আরও জোর দিয়ে ?? সম্ভবত না ..)
ফেডেরিকো গ্যালো

নতুন টেবিলটি সন্নিবেশ করাতে কি একই আদেশটি ব্যবহার করা সম্ভব
সেলেভকুমার

34

(জাজানো ১.7.১) সহজভাবে চলমান python manage.py inspectdbডেটাবেসে সমস্ত সারণীর ক্লাস তৈরি করবে এবং কনসোলে প্রদর্শন করবে।

 $ python manage.py inspectdb

মানক ইউনিক্স আউটপুট পুনঃনির্দেশ ব্যবহার করে এটি একটি ফাইল হিসাবে সংরক্ষণ করুন:

 $ python manage.py inspectdb > models.py

(এটি MySQL এবং django 1.9 নিয়ে আমার জন্য কাজ করে)


10

আমি জ্যাঙ্গোর ইন্সপেক্টডবি কমান্ড ইউটিলিটি, জাঙ্গো ইন্সপেক্টডবি রিফ্যাক্টরের ভিত্তিতে একটি পুনরায় ব্যবহারযোগ্য অ্যাপ তৈরি করেছি ।

এটি বিদ্যমান ডাটাবেস থেকে মডেল ফোল্ডারের অভ্যন্তরে বিভিন্ন ফাইলগুলিতে মডেলগুলি ভেঙে দেয়। এটি সংখ্যায় বড় হয়ে ওঠার মডেলগুলি পরিচালনা করতে সহায়তা করে।

আপনি এটি পাইপের মাধ্যমে ইনস্টল করতে পারেন:

pip install django-inspectdb-refactor

তারপরে অ্যাপ্লিকেশনগুলিতে সেটিংস.পি তে নিবন্ধন করুন inspectdb_refactor

এর পরে আপনি কমান্ড লাইন থেকে এটি ব্যবহার করতে পারেন:

python manage.py inspectdb_refactor --database=your_dbname_defined_in_settings --app=your_app_label

এটি আপনার অ্যাপ্লিকেশনের অভ্যন্তরে বিভিন্ন মডেল ফাইল হিসাবে সমস্ত টেবিলের সাথে সফলভাবে মডেল ফোল্ডার তৈরি করবে। উদাহরণ স্বরূপ:

সাধারণ কাঠামো

আরও বিশদ এখানে পাওয়া যাবে।


এখানে আরও কিছু বিবরণ যুক্ত করুন
ম্যাথিউজ সানি

পাইথন 3 ম্যানেজ.পি ইন্সপেক্টডিবি_রেফ্যাক্টর - ডেটাবেস = এক্সএমএলডিবি - অ্যাপ্লিকেশন = জ্যাঙ্গো_এসবি_এডমিন ত্রুটি: অজানা আদেশ: 'ইন্সপেক্টডিবি_রেফ্যাক্টর ব্যবহারের জন্য' টাইপ 'ম্যানেজ.পি সহায়তা' '
আলী রেজা

আপনি কি এই অ্যাপ্লিকেশনগুলিকে আপনার সেটিংসে নিবন্ধিত করেছেন ?
not2acoder

আমি এই ভুল পেয়ে যাচ্ছি get_meta() missing 1 required positional argument: 'is_partition'
জাজানো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.