মাইএসকিউএলডিবি, মাইএসকিএলসিলেট এবং মাইএসকিউএল সংযোগকারী / পাইথনের মধ্যে পার্থক্য কী?


91

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

  1. আছে MySQLdb

  2. আছে mysqlclient

  3. এবং তারপরে একটি মাইএসকিএল সংযোগকারী পাইথন রয়েছে

তাদের প্রত্যেকটি কী, পার্থক্য এবং কোথায় সেগুলি ব্যবহার করবেন? ধন্যবাদ


4
বেশিরভাগ ভাষায় বিভিন্ন ধরণের পরিশীলিতকরণ, সমর্থন এবং গুণমানের বিভিন্ন ডাটাবেস অ্যাডাপ্টার স্তর রয়েছে।
তাদমান

মাইএসকিএলসিলেটটি মাইএসকিউএলডিবি'র পাইথন ৩.৩ + সমর্থন সহ একটি সংস্কৃত সংস্করণ, এবং মাইএসকিএল সংযোগকারীটি মাইএসকিএল থেকে সরকারী মডিউল।
warungman

4
আমরা pymysql আছে
Cenk Alti

উত্তর:


77

MySQLdb সি মডিউল যা কার্যকরী MySQL ডেটাবেস জন্য API কাছাকাছি একটি পাতলা পাইথন মোড়কের হয়।

কিছুক্ষণ আগে এখানে র‌্যাপারের মাইএসকিউএলডিবি 1 সংস্করণ ব্যবহৃত হয়েছিল এবং এখন এটি উত্তরাধিকার হিসাবে বিবেচিত হয়। মাইএসকিউএলডিবি 1 ত্রুটি সংশোধন এবং পাইথন 3 সমর্থন করে মাইএসকিউএলডিবি 2-তে বিকশিত হতে শুরু করার সাথে সাথে একটি মাইএসকিউএলডিবি 1 তৈরি হয়েছিল এবং এখানে কীভাবে মাইএসকিউএলসিলেট হাজির হয়েছে, বাগফিক্সেস এবং পাইথন 3 সমর্থন সহ। সংক্ষেপে, সুতরাং এখন আমাদের কাছে মাইএসকিউএলডিবি 2 রয়েছে যা উত্পাদন ব্যবহারের জন্য প্রস্তুত নয়, মাইএসকিউএলডিবি 1 একটি পুরানো ড্রাইভার হিসাবে এবং একটি সম্প্রদায়টি বাগ ফিক্স এবং পাইথন 3 সমর্থন সহ মাইএসকিএলসিলেট সমর্থন করে।

এখন, এই জগাখিরি সমাধান করার জন্য, মাইএসকিউএল তাদের মাইএসকিউএল অ্যাডাপ্টারের নিজস্ব সংস্করণ সরবরাহ করে - মাইএসকিএল সংযোগকারী , একটি অল-ইন পাইথন মডিউল যা কোনও মডিউল নির্ভরতা এবং কেবলমাত্র স্ট্যান্ডার্ড পাইথন মডিউল ব্যবহার না করে মাইএসকিউএল এপিআই ব্যবহার করে।

সুতরাং এখন প্রশ্নটি নেমে এসেছে: mysqlclient বনাম mysql সংযোজক।

আমার হিসাবে, আমি সরকারীভাবে সমর্থিত লাইব্রেরি সহ যাব, তবে mysqlclientএটি একটি ভাল পছন্দও হওয়া উচিত। উভয়ই স্থির করে ফিক্সগুলি এবং নতুন বৈশিষ্ট্যগুলি সহ সক্রিয়ভাবে আপডেট করা হচ্ছে যা আপনি শেষ দিনগুলিতে সক্রিয় কমিট দ্বারা দেখতে পাবেন।

দ্রষ্টব্য: তাদের সাথে আমার খুব বেশি অভিজ্ঞতা হয়নি, সুতরাং এমন ঘটনাও ঘটতে পারে যখন একজন বা অন্য আপনার প্রয়োজন অনুসারে কাজ না করে। উভয় লাইব্রেরি পিইপি-249 স্ট্যান্ডার্ড অনুসরণ করে যার অর্থ আপনার সর্বত্র কমপক্ষে বেস কার্যকারিতা সহ ভাল হওয়া উচিত।

ইনস্টলেশন ও নির্ভরতা

  • mysqlclient

সি র‌্যাপারের কাঁটাচামচ হিসাবে এটি মাইএসকিউএল এর সাথে কাজ করার জন্য সি মডিউলগুলির প্রয়োজন যা এই এক্সটেনশানগুলি তৈরি করতে পাইথন হেডার ফাইল যুক্ত করে (পাইথন-দেব পড়ুন)। ইনস্টলেশন আপনি যে সিস্টেমটি ব্যবহার করেন তার উপর নির্ভর করে, কেবল প্যাকেজের নাম সম্পর্কে আপনার সচেতন এবং সেগুলি ইনস্টল করতে পারে তা নিশ্চিত করুন make


66

পাইথনের জন্য বর্তমানে মাইএসকিউএল অ্যাডাপ্টার রয়েছে যা বর্তমানে রক্ষণাবেক্ষণ করা হয়:

  • mysqlclient- সিপিথনের দ্রুততম মাইএসকিউএল সংযোগকারী। mysql-connector-cকাজ করার জন্য সি লাইব্রেরি প্রয়োজন ।

  • PyMySQL- খাঁটি পাইথন মাইএসকিউএল ক্লায়েন্ট। উভয়ের রক্ষণাবেক্ষণকারীর মতে mysqlclientএবংPyMySQL , আপনার ব্যবহার করা উচিত PyMySQLযদি:

    • আপনি libmysqlclientকোনও কারণে ব্যবহার করতে পারবেন না ।
    • আপনি জেনভেট বা ইভেন্টলেটটির বানরপ্যাচযুক্ত সকেট ব্যবহার করতে চান।
    • আপনি মাইএসকিএল প্রোটোকল হ্যাক করতে চান না।
  • mysql-connector-python- মাইএসকিউএল সংযোগকারীটি ওরাকলে মাইএসকিউএল গ্রুপ দ্বারা বিকাশ করা হয়েছিল, এটি পুরোপুরি পাইথনে লেখা হয়েছিল। তিনজনের মধ্যে এটির অভিনয় সবচেয়ে খারাপ বলে মনে হচ্ছে worst এছাড়াও, কিছু লাইসেন্সিং সমস্যার কারণে আপনি এটি পিপিআই থেকে ডাউনলোড করতে পারবেন না (তবে এটি এখন কনডোর মাধ্যমে উপলব্ধ)।

বেঞ্চমার্ক

নিম্নলিখিত মানদণ্ড অনুসারে mysqlclientখাঁটি পাইথন ক্লায়েন্টের চেয়ে দ্রুত (কখনও কখনও> 10x দ্রুত) is


4
সুতরাং দেখতে PyMySQLপাইপিপি ব্যবহার করে এখনও চলার পথটি মনে হচ্ছে।
র‌্যাডটেক

আপনি চাকা প্যাকেজ মাধ্যমে এটি ইনস্টল করতে পারেন যদি আপনি mysqlclient সংকলন সংক্রান্ত সমস্যা রয়েছে এখানে বর্ণনা অনুযায়ী: stackoverflow.com/a/31077052/2848256
Искрен Станиславов

স্ক্যালকিমি মাইএসকিএলসিলেট সমর্থন করে?
વિશাল

4
@vishal আমি যতদূর জানি mysqlclient, ডিফল্টরূপে আপনার ডাটাবেস URL টি দিয়ে শুরু হয় sqlalchemy দ্বারা ব্যবহৃত কানেক্টর mysql://...। ব্যবহার করতে PyMySQL, আপনার URL টি দিয়ে শুরু করুন mysql+pymysql://...। ব্যবহার করতে mysql-connector-python, আপনার URL টি দিয়ে শুরু করুন mysql+mysqlconnector://...। আরও তথ্যের জন্য স্ক্যালেচেমি ডক্স দেখুন ।
ostrokach

11

ব্যবহারকারীদের দ্বারা সরবরাহ প্রচুর। পার্টিতে একটু দেরি। তবে পাইপ 3.7 সংস্করণের জন্য বেঞ্চমার্কিং সহ আমার 2 সেন্ট

আপনি দ্রুত অ্যাক্সেস এবং পুনরাবৃত্তি অ্যাক্সেস করতে চাইলে mysqlclient এ লেগে থাকুন

MySQL Connector/Python: 23.096168518066406 [sec]
mysqlclient: 6.815327882766724 [sec]
PyMySQL: 24.616853952407837 [sec]
MySQL Connector/Python: 22.619106769561768 [sec]
mysqlclient: 6.607790231704712 [sec]
PyMySQL: 24.410773038864136 [sec]

লুপ ... পূর্ববর্তী বেঞ্চমার্কিং থেকে ...

def q100k(cur):
    t = time.time()
    for _ in range(100000):
        cur.execute("SELECT 1,2,3,4,5,6")
        res = cur.fetchall()
        assert len(res) == 1
        assert res[0] == (1, 2, 3, 4, 5, 6)
    return time.time() - t
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.