پایتون می تواند به MySQL و پایگاه های داده ی دیگری متصل شود. از آنجایی که MySQL مشهورترین پایگاه داده در وب است ما از همین پایگاه داده برای آموزش هایمان استفاده می کنیم. همچنین برای آنکه در این آموزش با ما جلو بیایید و از MySQL استفاده کنید باید آن را در سیستم خود نصب کنید. برای دانلود و نصب MySQL می توانید به این لینک مراجعه کنید.
همچنین پایتون به صورت پیش فرض توانایی اتصال به MySQL ندارد بلکه به Driver خاص خودش نیاز دارد. درایور های متعددی برای پایتون (برای اتصال به MySQL) نوشته شده اند که ما در این آموزش از MySQL Connector استفاده خواهیم کرد. برای نصب MySQL Connector بهتر است از PIP استفاده کنید تا به مشکلات عجیب و غریب برنخورید (اگر نسخه ی جدید پایتون را دانلود کرده اید به احتمال بسیار زیاد PIP به صورت پیش فرض برایتان نصب شده است اما اگر به هر دلیلی میخواهید از نسخه های قدیمی استفاده کنید به جلسات قبل این دوره ی آموزشی برای کار با PIP سر بزنید). نصب MySQL Connector از طریق PIP با کد زیر انجام می شود:
C:\Users\Your Name\AppData\Local\Programs\Python\Python36-32\Scripts>python -m pip install mysql-connector
برای آنکه مطمئن شویم MySQL Connector در سیستم ما نصب شده است (یا برای آنکه بدانید از قبل روی سیستم شما نصب بوده یا خیر) یک صفحه ی پایتون (مثلا با نام demo_mysql_test.py) بسازید و کد زیر را در آن paste کنید:
import mysql.connector
این کد هیچ خروجی ندارد. در واقع اگر این صفحه بدون هیچ خطایی اجرا شد یعنی ماژول MySQL Connector به طور صحیح روی سیستم شما نصب شده است.
برای شروع و تست برنامه باید یک اتصال به پایگاه داده ی خود برقرار کنیم. من برای تست فایلی به نام demo_mysql_connection.py با محتویات زیر را ایجاد کرده ام:
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="myusername", passwd="mypassword" ) print(mydb)
نام کاربری (user) و رمز عبور (passwd) شما بسته به تنظیمات سیستم شما در MySQL دارد.
خروجی:
<mysql.connector.connection.MySQLConnection object ar 0x016645F0>
این کد یعنی اتصال ما با پایگاه داده برقرار شده است.
برخی اوقات ممکن است بخواهید خودتان یک پایگاه داده بسازید. برای این کار از دستور CREATE DATABASE استفاده می کنیم که یک دستور SQL است و ربطی به زبان پایتون ندارد. در صورتی که با دستورات SQL آشنا نیستید باید دوره ی «آموزش زبان SQL» روکسو را بگذرانید. در کد زیر می خواهیم یک پایگاه داده ی جدید به نام mydatabase ایجاد کنم بنابراین می توان گفت:
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="myusername", passwd="mypassword" ) mycursor = mydb.cursor() mycursor.execute("CREATE DATABASE mydatabase") #If this page is executed with no error, you have successfully created a database.
در این کد ابتدا ماژول mysql.connector را import کرده ایم. سپس با دستور connect به MySQL متصل شده ایم (پارامترهای user و password به تنظیمات شما بستگی دارد). سپس یک cursor ایجاد کرده ایم؛ cursor ها به ما اجازه می دهند که با استفاده از یک اتصال پایگاه داده، چندین محیط کاری داشته باشیم (چیزی شبیه به session ها، منتهی برای پایگاه داده). در آخر نیز با دستور execute کد SQL خود را اجرا کرده ایم. اگر کد بالا بدون خطا برای شما اجرا شد یعنی پایگاه داده ی جدید به درستی ساخته شده است.
همچنین اگر بخواهید لیستی از پایگاه های داده ی موجود در برنامه را ببینید از دستور SQL معروف SHOW DATABASES استفاده می کنید:
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="myusername", passwd="mypassword" ) mycursor = mydb.cursor() mycursor.execute("SHOW DATABASES") for x in mycursor: print(x)
در این کد با استفاده از یک حلقه تمام پایگاه های داده ی موجود در سیستم را نمایش داده ایم. خروجی این کد برای من به شکل زیر است:
('information_scheme',)
('mydatabase',)
('performance_schema',)
('sys',)
اگر شما پایگاه های داده ی بیشتر یا کمتری داشته باشید، خروجی متفاوت خواهد بود.
البته می توانید یک اتصال به پایگاه داده ی خود برقرار کنید:
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="myusername", passwd="mypassword", database="mydatabase" )
در صورتی که این کد بدون خطا اجرا شد یعنی چنین پایگاه داده ای وجود دارد و اگر خطایی دریافت کردید یعنی چنین پایگاه داده ای وجود ندارد.
برای ساخت جدول ها از دستور CREATE TABLE استفاده می کنیم (باز هم یک دستور SQL). به طور مثال اگر بخواهیم جدولی به نام customers را بسازیم، می گوییم:
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="myusername", passwd="mypassword", database="mydatabase" ) mycursor = mydb.cursor() mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))")
این کد هیچ خروجی ندارد؛ اگر این صفحه بدون دریافت خطا اجرا شد یعنی کد شما به درستی اجرا شده است.
نکته: اگر با دستوراتی مانند CREATE TABLE یا مقادیر VARCHAR آشنا نیستید باید به دوره ی «آموزش زبان SQL» سری بزنید. این دستورات ربطی به زبان پایتون ندارند و جزئی از زبان SQL (زبان ارتباط با پایگاه های داده) می باشند.
حالا می توانیم با استفاده از دستور SHOW TABLES به تمام جدول های ساخته شده دسترسی داشته باشیم:
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="myusername", passwd="mypassword", database="mydatabase" ) mycursor = mydb.cursor() mycursor.execute("SHOW TABLES") for x in mycursor: print(x)
خروجی کد:
('customers',)
همانطور که می دانید در پایگاه های داده زمانی که جدولی ساخته می شود باید یک ستون خاص را با مقادیر یکتا به عنوان PRIMARY KEY انتخاب کنید. ما از دستور INT AUTO_INCREMENT PRIMARY KEY استفاده می کنیم تا PRIMARY KEY خود را ایجاد کنیم. این دستور مقدار PRIMARY KEY را به صورت خودکار افزایش می دهد (هر ردیف، یک واحد افزایش). مثال:
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="yourusername", passwd="yourpassword", database="mydatabase" ) mycursor = mydb.cursor() mycursor.execute("CREATE TABLE customers (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), address VARCHAR(255))")
نکته: اگر جدول مورد نظر از قبل ساخته شده است باید از دستور ALTER TABLE استفاده کنید:
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="yourusername", passwd="yourpassword", database="mydatabase" ) mycursor = mydb.cursor() mycursor.execute("ALTER TABLE customers ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")
این کدها جنبه ی یادآوری دارند و شما حتما باید با زبان SQL آشنا باشید. امروزه تقریبا هیچ برنامه ی تحت وب یا وب سایتی وجود ندارد که بدون پایگاه داده باشد و زبان تعامل با پایگاه داده SQL است (به غیر از پایگاه های داده ای که زبان های متفاوتی دارند). بنابراین پیشنهاد اکید بنده این است که به دوره ی «آموزش زبان SQL» سری بزنید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.