پایتون و MySQL: ساخت پایگاه داده و جدول

07 آبان 1398
پایتون و MySQL: ساخت پایگاه داده و جدول

نصب MySQL Connector

پایتون می تواند به 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

همانطور که می دانید در پایگاه های داده زمانی که جدولی ساخته می شود باید یک ستون خاص را با مقادیر یکتا به عنوان 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» سری بزنید.

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری از مقدماتی تا پیشرفته با پایتون توصیه می‌کند:
نویسنده شوید

دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.