نوشتن چیزی شبیه PDO در در پایتون

سلام . در پایتون چه طوری میشه چیزی مشابه PDO در PHP نوشت برای اتصال به Mysql؟

سلام.
قضیه یه کم با php فرق میکنه.

در کل در هر زبونی ۳مدل اتصال به دیتابیس sql داریم (اگه مورد دیگه ای هست، دوستان اصلاح کنن)

  • نوشتن کوئری های sql
  • استفاده از لایبرریهایی که این کوئری ها رو جنریت میکنن (ما کوئری نمیزنیم، با کدهایی شبیه سینتکس خود زبان، دیتای خودمونو توصیف میکنیم و متن کوئری رو میسازه)
  • استفاده از orm ها (دیتابیس رو به شکل یک آبجکت میبینیم و باهاش کار میکنیم)

برای مورد اول در پایتون میتونید از pymysql استفاده کنید. مسلما خیلی راحتتر از pdo در php هست.
برای مورد دوم توی پایتون پیشنهادی ندارم.
برای مورد سوم میتونید از sqlalchemy استفاده کنید (که خودش برای ارتباط با دیتابیس از pymysql استفاده میکنه) که کار رو خیلی خیلی راحتتر میکنه، ولی راندمانش توی کوئریهای پیچیده، پایینتره.

3 Likes

کمی درک کردن حرفتون برام سخت بود. ولی ی چیزایی به دست اوردم مرسی.

از نظر امنیتی و سرعت فرقی دارند؟ کدوم مناسبتر هستش

سلام
با جنگو تا حالا کار کردین؟
ببینید در واقع ما به جای این که مستقیم به زبان SQL یه کد بزنیم که یه کاری برامون انجام بده با پایتون کد میزنیم
مثلا برای ایجاد یه Table یه کلاس با یه سری property میسازیم خودش برامون کد SQL معادل رو اجرا میکنه
برای مثال توی جنگو ما چنین چیزی مینویسیم

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

اما در نهایت خودش اینو تبدیل به چنین چیزی میکنه:

CREATE TABLE myapp_person (
    "id" serial NOT NULL PRIMARY KEY,
    "first_name" varchar(30) NOT NULL,
    "last_name" varchar(30) NOT NULL
);
1 Like

لطفا عنوان بهتری انتخاب کنید

PDO = PHP Database Object

1 Like

خب، مباحثش پیچیده نیست ولی طولانیه. نمیتونم کامل توضیح بدم.
باید خودتون برید دنبالشون و داکیومنتهای هرکدوم رو ببینید تا کامل متوجه طرز کارشون بشید.

امنیت اینجا مطرح نیست. این شمایید که باید سیستمتون رو امن کنید.
تنها چیزی که میتونه فاکتور تصمیم گیری باشه، انتخاب بین راحتی کار یا راندمان بالاتره.

یه توضیحی هم درمورد بحث راندمان بدم.
در کل orm ها برای بعضی از درخواستها ممکنه دو یا چند کوئری بزنن و نتیجه رو بسازن و به ما تحویل بدن، در حالی که اگه خودمون sql رو خوب بلد باشیم، بتونیم با یه کوئری، اون دیتای پیچیده رو از دیتابیس بگیریم.

1 Like

سپاس فراوان آقای موسوی. بله با جانگو کار کردم. الان متوجه دقیق منظورتون شدم . چندتا سوال برام پیش اومده

۱- به فرض مثال بنده یک اسکریپت ساده نوشتم و میخوام از پایگاه داده استفاده کنم. اگه از django.db استفاده کنم. مشکل خاصی پیش نمیاد؟(خودمم نمیدونم چه مشکلی ولی میخوام از تجربه شما استفاده کنم)
و این که سرعت و عملکردش چه طور هستش؟

سپاس فراوان . مطالب قشنگ برام مفهوم شد.
حرف قشنگی هم در مورد امنیت زدید که خیلی خوب بود.مرسی

در بالا من جواب اقای موسوی رو دادم. شما هم اگه جواب بنده رو بدید خیلی لطف کردید.
راستی در مورد orm ها اصلا اطلاع خاصی ندارم. اگه میشه ی خلاصه وار توضیح بدید. بنده حتما جستجو میکنم در موردش.

این الان مثال دقیق sqlalchemy هست.

مثال @SMMousavi دقیقا یک orm هست.
یه لایه ی abstraction بین ما و دیتابیس که دیتابیس رو به شکل آبجکتهای پایتون نشونمون میده.

1 Like

به این نتیجه رسیدم که از همون Mysql استفاده کنم. ( به خاطر این حرف امنیت اینجا مطرح نیست. این شمایید که باید سیستمتون رو امن کنید.)
ولی خب شما میتونید پیشنهادات دیگه ای رو هم بدید.

مثلا کدوم یک از اینها راندمان بهتر و دستورات نه خیلی سخت تری دارند؟

به هر حال بهتره با هردوش کار کنید و یاد بگیرید. هرکدوم ویژگی خودشو داره.

هیچکدوم دستورات راحت در کنار راندمان بالا نداره.
درمورد کوئریهای sql هم بهتره یادشون بگیرید. اصلا سخت نیستن.

1 Like

اگه درست متوجه شده باشم شما اگه قصد توسعه بر مبنای دیتا database-driven web-based applicationsدارید ، نسبت به نیاز شما و پایتونی بودن فریم ورک web2py رو پیشنهاد میکنم

http://www.web2py.com/

2 Likes

در ادامه‌ی مطلب @nim4 دوست دارم ۲تا آپشن دیگه‌ای که دارید رو بهتون معرفی کنم.

flask و django

اولی یه میکروفریموورکه که چیزی out of the box به شما نمیده و همه ‌چیز رو اونطوری که خودتون میخواید سوار میکنید.
دومی یه فریموورک کامله که باید با روش خودش باهاش کار کنید.

2 Likes

بله با django کار کردم. ولی چون در پایتون در basic مشکل داشتم. مجبور شدم همه چی رو به ترتیب بیام جلو. حالا ی مدت دیگه میخوام برم سراغش

1 Like

پیشنهاد می کنم یه نگاهی به کد و ساختار ActiveRecord در ریلز هم بندازید شاید چیزای جالبی براتون داشته باشه، نا گفته نماند که کلا Active Record برای اولین بار در Rails معرفی شد بعد در زبان ها و فریموورک های دیگه هم پیاده سازی شد.

1 Like

اینم یه پست جالب

2 Likes