12 มกราคม 2559

Published 1/12/2559 by with 0 comment

เชื่อมต่อฐานข้อมูล MySQL ด้วยภาษาไพทอน

สวัสดีผู้อ่านทุกท่านครับ บทความนี้ผมจะพาผู้อ่าน ไปเชื่อมต่อฐานข้อมูล MySQL ด้วยภาษาไพทอนกันครับ

ในการเชื่อมต่อฐานข้อมูล MySQL ด้วยภาษาไพทอน เรามักจะนึกถึงโมดูล mysql-connector-python แต่โมดูลดังกล่าวไม่ได้ถูกเขียนด้วยภาษาไพทอนทั้งหมด มีการใช้งาน MySQL C client libraries ด้วย ทำให้มีปัญหาเวลาติดตั้ง (และความเข้ากันได้) ทำให้เกิดโมดูลใหม่ขึ้นมาชื่อ mysql-connector

โมดูล mysql-connector เป็น MySQL driver ที่เขียนในภาษาไพทอนทั้งหมด (ไม่มีปัญหาเรื่องความเข้ากันได้) พร้อมรองรับ DB API v2.0 specification (PEP-249) พัฒนาโดย Oracle
ใช้ License: GNU GPLv2
รองรับทั้ง Python 2 และ Python 3

สามารถติดตั้งได้โดยใช้คำสั่ง pip :
pip install mysql-connector

เอกสารการใช้งาน


ในการเรียกใช้งานโมดูลนี้ต้อง

[python]import mysql.connector[/python]

เข้ามาทุกครั้ง

การเชื่อมต่อกับฐานข้อมูล



[python]
import mysql.connector

cnx = mysql.connector.connect(user='scott', password='tiger',
host='127.0.0.1',
database='employees')
cnx.close()
[/python]

หากต้องการจัดการข้อผิดพลาดสามารถใช้ try except เข้ามาช่วยได้ดังนี้

[python]
import mysql.connector
from mysql.connector import errorcode

try:
cnx = mysql.connector.connect(user='scott',
database='testt')
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with your user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist")
else:
print(err)
else:
cnx.close()
[/python]

แต่หากไม่ต้องการกรอกข้อมูลลงใน argument สามารถใช้ข้อมูลชนิด dictionary ช่วยในการเชื่อมต่อกับ

ฐานข้อมูลได้ดังนี้

[python]
import mysql.connector

config = {
'user': 'scott',
'password': 'tiger',
'host': '127.0.0.1',
'database': 'employees',
'raise_on_warnings': True,
}

cnx = mysql.connector.connect(**config)

cnx.close()
[/python]

การใช้คำสั่ง SQL กับฐานข้อมูล MySQL ในภาษาไพทอน


เราสามารถใช้คำสั่ง SQL เพื่อสร้างฐานข้อมูล สร้างตาราง เพิ่มข้อมูลลงตาราง ปรับเปลี่ยนข้อมูล และลบข้อมูลได้ โดยใช้คำสั่ง

[python]cursor.execute(โค้ด SQl)[/python]

เมื่อใช้งานคำสั่งเสร็จ ต้องใช้คำสั่ง

[python]commit()[/python]

เพื่อบันทึกข้อมูลเสมอ

ตัวอย่างเช่น
ใช้คำสั่งสร้างตาราง

[python]
import mysql.connector
from mysql.connector import errorcode

con = mysql.connector.connect(user='scott', password='tiger',
host='127.0.0.1',
database='employees')
cursor = con.cursor()
sql = '''CREATE TABLE foo (
bar VARCHAR(50) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
'''
cursor.execute(sql)


con.commit()
con.close()
[/python]

การเพิ่มข้อมูล

[python]
import mysql.connector
con = mysql.connector.connect(user='scott', password='tiger',
host='127.0.0.1',
database='employees')
add_db = "insert into foo(bar) values('Tontan')"
cursor = con.cursor()
cursor.execute(add_db)
con.commit()
con.close()
[/python]

การดึงข้อมูลมาใช้งาน


สามารถใช้คำสั่ง

[python]
cursor.fetchall()[/python]

หลังคำสั่ง

[python]cursor.execute(โค้ด SQl)[/python]

โดยโค้ด SQl ต้องเป็นคำสั่ง query ข้อมูลตามหลักภาษา SQL
ตัวอย่าง

[python]
import mysql.connector

con = mysql.connector.connect(user='scott', password='tiger',
host='127.0.0.1',
database='employees')
cursor = con.cursor()
sql = ("select bar from foo")
cursor.execute(sql)
data = cursor.fetchall() # ได้ผลลัพธ์ออกมาในรูป list
print(data[0])
[/python]

ผลลัพธ์
Tontan

เอกสารการใช้งาน http://dev.mysql.com/doc/connector-python/en/
ติดตามบทความต่อไปนนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)