Python MySQL - คู่มือฉบับย่อ
มาตรฐาน Python สำหรับอินเทอร์เฟซฐานข้อมูลคือ Python DB-API อินเทอร์เฟซฐานข้อมูล Python ส่วนใหญ่เป็นไปตามมาตรฐานนี้
คุณสามารถเลือกฐานข้อมูลที่เหมาะสมสำหรับแอปพลิเคชันของคุณ Python Database API รองรับเซิร์ฟเวอร์ฐานข้อมูลที่หลากหลายเช่น -
- GadFly
- mSQL
- MySQL
- PostgreSQL
- Microsoft SQL Server 2000
- Informix
- Interbase
- Oracle
- Sybase
นี่คือรายการสินค้าจากอินเตอร์เฟซฐานข้อมูลหลาม - งูหลามการเชื่อมต่อฐานข้อมูลและ API คุณต้องดาวน์โหลดโมดูล DB API แยกต่างหากสำหรับแต่ละฐานข้อมูลที่คุณต้องการเข้าถึง ตัวอย่างเช่นหากคุณต้องการเข้าถึงฐานข้อมูล Oracle และฐานข้อมูล MySQL คุณต้องดาวน์โหลดทั้งโมดูลฐานข้อมูล Oracle และ MySQL
mysql-connector-python คืออะไร?
MySQL Python / Connector เป็นอินเทอร์เฟซสำหรับเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูล MySQL จาก Python ใช้ Python Database API และสร้างขึ้นบน MySQL
ฉันจะติดตั้ง mysql-connector-python ได้อย่างไร
ก่อนอื่นคุณต้องแน่ใจว่าคุณได้ติดตั้ง python ในเครื่องของคุณแล้ว ต้องการทำเช่นนั้นเปิดพร้อมรับคำสั่งและประเภทหลามในนั้นและกดEnter หากมีการติดตั้ง python ในระบบของคุณแล้วคำสั่งนี้จะแสดงเวอร์ชันดังที่แสดงด้านล่าง -
C:\Users\Tutorialspoint>python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
ตอนนี้กดctrl + zแล้วกดEnterเพื่อออกจากไพ ธ อนเชลล์และสร้างโฟลเดอร์ (ซึ่งคุณตั้งใจจะติดตั้งตัวเชื่อมต่อ Python-MySQL) ชื่อ Python_MySQL เป็น -
>>> ^Z
C:\Users\Tutorialspoint>d:
D:\>mkdir Python_MySQL
ตรวจสอบ PIP
PIP เป็นตัวจัดการแพ็คเกจใน python ซึ่งคุณสามารถติดตั้งโมดูล / แพ็คเกจต่างๆใน Python ดังนั้นในการติดตั้ง Mysql-python mysql-connector-python คุณต้องตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง PIP ไว้ในคอมพิวเตอร์ของคุณและมีการเพิ่มตำแหน่งลงในพา ธ
คุณสามารถทำได้โดยดำเนินการคำสั่ง pip หากคุณไม่มี PIP ในระบบของคุณหรือหากคุณยังไม่ได้เพิ่มตำแหน่งในไฟล์Path ตัวแปรสภาพแวดล้อมคุณจะได้รับข้อความแสดงข้อผิดพลาดเป็น -
D:\Python_MySQL>pip
'pip' is not recognized as an internal or external command,
operable program or batch file.
ในการติดตั้ง PIP ให้ดาวน์โหลดget-pip.pyไปยังโฟลเดอร์ที่สร้างไว้ด้านบนและจากคำสั่งนำทางและติดตั้ง pip ดังนี้ -
D:\>cd Python_MySQL
D:\Python_MySQL>python get-pip.py
Collecting pip
Downloading
https://files.pythonhosted.org/packages/8d/07/f7d7ced2f97ca3098c16565efbe6b15fafcba53e8d9bdb431e09140514b0/pip-19.2.2-py2.py3-none-any.whl (1.4MB)
|████████████████████████████████| 1.4MB 1.3MB/s
Collecting wheel
Downloading
https://files.pythonhosted.org/packages/00/83/b4a77d044e78ad1a45610eb88f745be2fd2c6d658f9798a15e384b7d57c9/wheel-0.33.6-py2.py3-none-any.whl
Installing collected packages: pip, wheel
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-19.2.2 wheel-0.33.6
การติดตั้ง mysql-connector-python
เมื่อคุณติดตั้ง Python และ PIP แล้วให้เปิด command prompt และอัพเกรด pip (ทางเลือก) ดังที่แสดงด้านล่าง -
C:\Users\Tutorialspoint>python -m pip install --upgrade pip
Collecting pip
Using cached
https://files.pythonhosted.org/packages/8d/07/f7d7ced2f97ca3098c16565efbe6b15fafcba53e8d9bdb431e09140514b0/pip-19.2.2-py2.py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 19.0.3
Uninstalling pip-19.0.3:
Successfully uninstalled pip-19.0.3
Successfully installed pip-19.2.2
จากนั้นเปิดพร้อมรับคำสั่งในโหมดผู้ดูแลระบบและติดตั้ง python MySQL เชื่อมต่อเป็น -
C:\WINDOWS\system32>pip install mysql-connector-python
Collecting mysql-connector-python
Using cached
https://files.pythonhosted.org/packages/99/74/f41182e6b7aadc62b038b6939dce784b7f9ec4f89e2ae14f9ba8190dc9ab/mysql_connector_python-8.0.17-py2.py3-none-any.whl
Collecting protobuf>=3.0.0 (from mysql-connector-python)
Using cached
https://files.pythonhosted.org/packages/09/0e/614766ea191e649216b87d331a4179338c623e08c0cca291bcf8638730ce/protobuf-3.9.1-cp37-cp37m-win32.whl
Collecting six>=1.9 (from protobuf>=3.0.0->mysql-connector-python)
Using cached
https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl
Requirement already satisfied: setuptools in c:\program files (x86)\python37-32\lib\site-packages (from protobuf>=3.0.0->mysql-connector-python) (40.8.0)
Installing collected packages: six, protobuf, mysql-connector-python
Successfully installed mysql-connector-python-8.0.17 protobuf-3.9.1 six-1.12.0
การยืนยัน
เพื่อตรวจสอบการติดตั้งสคริปต์สร้าง python ตัวอย่างโดยมีบรรทัดต่อไปนี้อยู่ในนั้น
import mysql.connector
หากการติดตั้งสำเร็จเมื่อคุณดำเนินการคุณจะไม่ได้รับข้อผิดพลาดใด ๆ -
D:\Python_MySQL>python test.py
D:\Python_MySQL>
การติดตั้ง Python จาก Scratch
หากคุณต้องการติดตั้ง Python ตั้งแต่เริ่มต้น เยี่ยมชมหลามหน้าแรก
คลิกที่ Downloads คุณจะถูกเปลี่ยนเส้นทางไปยังหน้าดาวน์โหลดซึ่งมีลิงก์สำหรับ python เวอร์ชันล่าสุดสำหรับแพลตฟอร์มต่างๆให้เลือกและดาวน์โหลด
ตัวอย่างเช่นเราได้ดาวน์โหลด python-3.7.4.exe (สำหรับ Windows) เริ่มกระบวนการติดตั้งโดยดับเบิลคลิกไฟล์. exe ที่ดาวน์โหลดมา
ตรวจสอบตัวเลือก Add Python 3.7 to Path และดำเนินการติดตั้ง หลังจากเสร็จสิ้นกระบวนการนี้ python จะถูกติดตั้งในระบบของคุณ
ในการเชื่อมต่อกับ MySQL (ทางเดียวคือ) เปิดพรอมต์คำสั่ง MySQL ในระบบของคุณดังที่แสดงด้านล่าง -
ถามรหัสผ่านที่นี่ คุณต้องพิมพ์รหัสผ่านที่คุณตั้งค่าเป็นผู้ใช้เริ่มต้น (รูท) ในขณะติดตั้ง
จากนั้นสร้างการเชื่อมต่อโดย MySQL แสดงข้อความต่อไปนี้ -
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.12-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
คุณสามารถยกเลิกการเชื่อมต่อจากฐานข้อมูล MySQL ได้ตลอดเวลาโดยใช้ไฟล์ exitคำสั่งที่mysql> prompt
mysql> exit
Bye
การสร้างการเชื่อมต่อกับ MySQL โดยใช้ Python
ก่อนสร้างการเชื่อมต่อกับฐานข้อมูล MySQL โดยใช้ python ให้สมมติว่า -
ว่าเราได้สร้างฐานข้อมูลชื่อ mydb.
เราได้สร้างตาราง EMPLOYEE โดยมีคอลัมน์ FIRST_NAME, LAST_NAME, AGE, SEX และ INCOME
ข้อมูลประจำตัวที่เราใช้เชื่อมต่อกับ MySQL คือชื่อผู้ใช้ - root, รหัสผ่าน - password.
คุณสามารถสร้างการเชื่อมต่อโดยใช้การเชื่อมต่อ ()คอนสตรัค สิ่งนี้ยอมรับชื่อผู้ใช้รหัสผ่านโฮสต์และชื่อของฐานข้อมูลที่คุณต้องการเชื่อมต่อ (ทางเลือก) และส่งคืนอ็อบเจ็กต์ของคลาส MySQLConnection
ตัวอย่าง
ต่อไปนี้เป็นตัวอย่างการเชื่อมต่อกับฐานข้อมูล MySQL "mydb"
import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Executing an MYSQL function using the execute() method
cursor.execute("SELECT DATABASE()")
#Fetch a single row using fetchone() method.
data = cursor.fetchone()
print("Connection established to: ",data)
#Closing the connection
conn.close()
เอาต์พุต
ในการดำเนินการสคริปต์นี้จะสร้างผลลัพธ์ต่อไปนี้ -
D:\Python_MySQL>python EstablishCon.py
Connection established to: ('mydb',)
คุณยังสามารถสร้างการเชื่อมต่อกับ MySQL โดยส่งข้อมูลรับรอง (ชื่อผู้ใช้รหัสผ่านชื่อโฮสต์และชื่อฐานข้อมูล) ไปยัง connection.MySQLConnection() ดังแสดงด้านล่าง -
from mysql.connector import (connection)
#establishing the connection
conn = connection.MySQLConnection(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Closing the connection
conn.close()
คุณสามารถสร้างฐานข้อมูลใน MYSQL โดยใช้แบบสอบถาม CREATE DATABASE
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของแบบสอบถาม CREATE DATABASE -
CREATE DATABASE name_of_the_database
ตัวอย่าง
คำสั่งต่อไปนี้สร้างฐานข้อมูลที่มีชื่อ mydb ใน MySQL -
mysql> CREATE DATABASE mydb;
Query OK, 1 row affected (0.04 sec)
หากคุณสังเกตรายการฐานข้อมูลโดยใช้คำสั่ง SHOW DATABASES คุณสามารถสังเกตฐานข้อมูลที่สร้างขึ้นใหม่ได้ดังที่แสดงด้านล่าง -
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| logging |
| mydatabase |
| mydb |
| performance_schema |
| students |
| sys |
+--------------------+
26 rows in set (0.15 sec)
การสร้างฐานข้อมูลใน MySQL โดยใช้ Python
หลังจากสร้างการเชื่อมต่อกับ MySQL แล้วในการจัดการข้อมูลคุณต้องเชื่อมต่อกับฐานข้อมูล คุณสามารถเชื่อมต่อกับฐานข้อมูลที่มีอยู่หรือสร้างของคุณเอง
คุณจะต้องมีสิทธิพิเศษในการสร้างหรือลบฐานข้อมูล MySQL ดังนั้นหากคุณมีสิทธิ์เข้าถึงผู้ใช้รูทคุณสามารถสร้างฐานข้อมูลใดก็ได้
ตัวอย่าง
ตัวอย่างต่อไปนี้สร้างการเชื่อมต่อกับ MYSQL และสร้างฐานข้อมูลในนั้น
import mysql.connector
#establishing the connection
conn = mysql.connector.connect(user='root', password='password', host='127.0.0.1')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Doping database MYDATABASE if already exists.
cursor.execute("DROP database IF EXISTS MyDatabase")
#Preparing query to create a database
sql = "CREATE database MYDATABASE";
#Creating a database
cursor.execute(sql)
#Retrieving the list of databases
print("List of databases: ")
cursor.execute("SHOW DATABASES")
print(cursor.fetchall())
#Closing the connection
conn.close()
เอาต์พุต
List of databases:
[
('information_schema',),
('dbbug61332',),
('details',),
('exampledatabase',),
('mydatabase',),
('mydb',),
('mysql',),
('performance_schema',)
]
คำสั่ง CREATE TABLE ใช้เพื่อสร้างตารางในฐานข้อมูล MYSQL ที่นี่คุณต้องระบุชื่อของตารางและคำจำกัดความ (ชื่อและประเภทข้อมูล) ของแต่ละคอลัมน์
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์สำหรับสร้างตารางใน MySQL -
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
);
ตัวอย่าง
แบบสอบถามต่อไปนี้สร้างตารางชื่อ EMPLOYEE ใน MySQL โดยมีห้าคอลัมน์ ได้แก่ FIRST_NAME LAST_NAME อายุเพศและรายได้
mysql> CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT);
Query OK, 0 rows affected (0.42 sec)
คำสั่ง DESC ให้คำอธิบายของตารางที่ระบุ ใช้สิ่งนี้เพื่อตรวจสอบว่าตารางถูกสร้างขึ้นหรือไม่ดังที่แสดงด้านล่าง -
mysql> Desc Employee;
+------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+-------+
| FIRST_NAME | char(20) | NO | | NULL | |
| LAST_NAME | char(20) | YES | | NULL | |
| AGE | int(11) | YES | | NULL | |
| SEX | char(1) | YES | | NULL | |
| INCOME | float | YES | | NULL | |
+------------+----------+------+-----+---------+-------+
5 rows in set (0.07 sec)
การสร้างตารางใน MySQL โดยใช้ Python
เมธอดชื่อ execute () (เรียกใช้บนวัตถุเคอร์เซอร์) ยอมรับสองตัวแปร
ค่าสตริงที่แสดงถึงการสืบค้นที่จะดำเนินการ
พารามิเตอร์ args ที่เป็นทางเลือกซึ่งอาจเป็นทูเปิลหรือรายการหรือพจนานุกรมแทนพารามิเตอร์ของคิวรี (ค่าของตัวยึดตำแหน่ง)
ส่งคืนค่าจำนวนเต็มแทนจำนวนแถวที่ได้รับผลจากแบบสอบถาม
เมื่อสร้างการเชื่อมต่อฐานข้อมูลแล้วคุณสามารถสร้างตารางโดยส่งแบบสอบถาม CREATE TABLE ไปยังไฟล์ execute() วิธี.
ในระยะสั้นในการสร้างตารางโดยใช้ python -
นำเข้า mysql.connector แพ็คเกจ
สร้างวัตถุการเชื่อมต่อโดยใช้ mysql.connector.connect() วิธีการโดยส่งชื่อผู้ใช้รหัสผ่านโฮสต์ (ค่าดีฟอลต์ทางเลือก: localhost) และฐานข้อมูล (ทางเลือก) เป็นพารามิเตอร์
สร้างวัตถุเคอร์เซอร์โดยเรียกใช้ไฟล์ cursor() วิธีการบนวัตถุการเชื่อมต่อที่สร้างขึ้นด้านบน
จากนั้นดำเนินการคำสั่ง CREATE TABLEโดยส่งเป็นพารามิเตอร์ไปยังไฟล์execute() วิธี.
ตัวอย่าง
ตัวอย่างต่อไปนี้สร้างตารางชื่อ Employee ในฐานข้อมูล mydb
import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Dropping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
#Creating table as per requirement
sql ='''CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT
)'''
cursor.execute(sql)
#Closing the connection
conn.close()
คุณสามารถเพิ่มแถวใหม่ลงในตาราง MySQL ที่มีอยู่โดยใช้ไฟล์ INSERT INTOคำให้การ. ในสิ่งนี้คุณต้องระบุชื่อของตารางชื่อคอลัมน์และค่า (ตามลำดับเดียวกันกับชื่อคอลัมน์)
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง INSERT INTO ของ MySQL
INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
VALUES (value1, value2, value3,...valueN);
ตัวอย่าง
แบบสอบถามต่อไปนี้จะแทรกระเบียนลงในตารางชื่อ EMPLOYEE
INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Mac', 'Mohan', 20, 'M', 2000);
คุณสามารถตรวจสอบบันทึกของตารางหลังจากการดำเนินการแทรกโดยใช้คำสั่ง SELECT เป็น -
mysql> select * from Employee;
+------------+-----------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE | SEX | INCOME |
+------------+-----------+------+------+--------+
| Mac | Mohan | 20| M | 2000 |
+------------+-----------+------+------+--------+
1 row in set (0.00 sec)
ไม่จำเป็นต้องระบุชื่อของคอลัมน์เสมอไปหากคุณส่งผ่านค่าของระเบียนในลำดับเดียวกันของคอลัมน์ของตารางคุณสามารถดำเนินการคำสั่ง SELECT โดยไม่มีชื่อคอลัมน์ดังนี้ -
INSERT INTO EMPLOYEE VALUES ('Mac', 'Mohan', 20, 'M', 2000);
การแทรกข้อมูลในตาราง MySQL โดยใช้ Python
execute()วิธีการ (เรียกใช้บนวัตถุเคอร์เซอร์) ยอมรับแบบสอบถามเป็นพารามิเตอร์และดำเนินการสืบค้นที่กำหนด ในการแทรกข้อมูลคุณต้องส่งคำสั่ง MySQL INSERT เป็นพารามิเตอร์ไป
cursor.execute("""INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Mac', 'Mohan', 20, 'M', 2000)""")
ในการแทรกข้อมูลลงในตารางใน MySQL โดยใช้ python -
นำเข้า mysql.connector แพ็คเกจ
สร้างวัตถุการเชื่อมต่อโดยใช้ mysql.connector.connect() วิธีการโดยส่งชื่อผู้ใช้รหัสผ่านโฮสต์ (ค่าดีฟอลต์ทางเลือก: localhost) และฐานข้อมูล (ทางเลือก) เป็นพารามิเตอร์
สร้างวัตถุเคอร์เซอร์โดยเรียกใช้ไฟล์ cursor() วิธีการบนวัตถุการเชื่อมต่อที่สร้างขึ้นด้านบน
จากนั้นเรียกใช้ไฟล์ INSERT คำสั่งโดยส่งเป็นพารามิเตอร์ไปยัง execute() วิธี.
ตัวอย่าง
ตัวอย่างต่อไปนี้เรียกใช้คำสั่งSQL INSERTเพื่อแทรกเร็กคอร์ดลงในตาราง EMPLOYEE -
import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
# Preparing SQL query to INSERT a record into the database.
sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
# Executing the SQL command
cursor.execute(sql)
# Commit your changes in the database
conn.commit()
except:
# Rolling back in case of error
conn.rollback()
# Closing the connection
conn.close()
การแทรกค่าแบบไดนามิก
คุณยังสามารถใช้ “%s” แทนค่าในไฟล์ INSERT แบบสอบถาม MySQL และส่งผ่านค่าไปยังรายการดังที่แสดงด้านล่าง -
cursor.execute("""INSERT INTO EMPLOYEE VALUES ('Mac', 'Mohan', 20, 'M', 2000)""",
('Ramya', 'Ramapriya', 25, 'F', 5000))
ตัวอย่าง
ตัวอย่างต่อไปนี้จะแทรกบันทึกลงในตารางพนักงานแบบไดนามิก
import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
# Preparing SQL query to INSERT a record into the database.
insert_stmt = (
"INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)"
"VALUES (%s, %s, %s, %s, %s)"
)
data = ('Ramya', 'Ramapriya', 25, 'F', 5000)
try:
# Executing the SQL command
cursor.execute(insert_stmt, data)
# Commit your changes in the database
conn.commit()
except:
# Rolling back in case of error
conn.rollback()
print("Data inserted")
# Closing the connection
conn.close()
เอาต์พุต
Data inserted
คุณสามารถดึง / ดึงข้อมูลจากตารางใน MySQL โดยใช้แบบสอบถาม SELECT แบบสอบถาม / คำสั่งนี้ส่งคืนเนื้อหาของตารางที่ระบุในรูปแบบตารางและเรียกว่าเป็นชุดผลลัพธ์
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของแบบสอบถาม SELECT -
SELECT column1, column2, columnN FROM table_name;
ตัวอย่าง
สมมติว่าเราได้สร้างตารางใน MySQL โดยมีชื่อcricketers_dataเป็น -
CREATE TABLE cricketers_data(
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Date_Of_Birth date,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
และถ้าเราใส่ 5 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -
insert into cricketers_data values('Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India');
insert into cricketers_data values('Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica');
insert into cricketers_data values('Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka');
insert into cricketers_data values('Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India');
insert into cricketers_data values('Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India');
การค้นหาต่อไปนี้จะดึงค่า FIRST_NAME และ Country จากตาราง
mysql> select FIRST_NAME, Country from cricketers_data;
+------------+-------------+
| FIRST_NAME | Country |
+------------+-------------+
| Shikhar | India |
| Jonathan | SouthAfrica |
| Kumara | Srilanka |
| Virat | India |
| Rohit | India |
+------------+-------------+
5 rows in set (0.00 sec)
คุณยังสามารถดึงค่าทั้งหมดของแต่ละระเบียนโดยใช้ * instated ของชื่อคอลัมน์เป็น -
mysql> SELECT * from cricketers_data;
+------------+------------+---------------+----------------+-------------+
| First_Name | Last_Name | Date_Of_Birth | Place_Of_Birth | Country |
+------------+------------+---------------+----------------+-------------+
| Shikhar | Dhawan | 1981-12-05 | Delhi | India |
| Jonathan | Trott | 1981-04-22 | CapeTown | SouthAfrica |
| Kumara | Sangakkara | 1977-10-27 | Matale | Srilanka |
| Virat | Kohli | 1988-11-05 | Delhi | India |
| Rohit | Sharma | 1987-04-30 | Nagpur | India |
+------------+------------+---------------+----------------+-------------+
5 rows in set (0.00 sec)
การอ่านข้อมูลจากตาราง MYSQL โดยใช้ Python
การอ่านการดำเนินการบนฐานข้อมูลหมายถึงการดึงข้อมูลที่เป็นประโยชน์จากฐานข้อมูล คุณสามารถดึงข้อมูลจาก MYSQL โดยใช้ไฟล์fetch() วิธีการจัดทำโดย mysql-connector-python
cursor.MySQLCursorระดับให้สามวิธีคือfetchall(), fetchmany() และ, fetchone() ที่ไหน
fetchall()วิธีการดึงข้อมูลแถวทั้งหมดในชุดผลลัพธ์ของแบบสอบถามและส่งกลับเป็นรายการสิ่งที่เพิ่มขึ้น (ถ้าเราดำเนินการนี้หลังจากดึงข้อมูลไม่กี่แถวมันจะส่งคืนแถวที่เหลือ)
fetchone() วิธีการดึงข้อมูลแถวถัดไปในผลลัพธ์ของแบบสอบถามและส่งกลับเป็นทูเพิล
fetchmany() วิธีการคล้ายกับ fetchone () แต่จะดึงข้อมูลชุดถัดไปของแถวในชุดผลลัพธ์ของแบบสอบถามแทนที่จะเป็นแถวเดียว
Note - ชุดผลลัพธ์คือวัตถุที่ส่งคืนเมื่อวัตถุเคอร์เซอร์ถูกใช้เพื่อสืบค้นตาราง
rowcount - นี่คือแอตทริบิวต์แบบอ่านอย่างเดียวและส่งกลับจำนวนแถวที่ได้รับผลกระทบจากเมธอด execute ()
ตัวอย่าง
ตัวอย่างต่อไปนี้ดึงข้อมูลแถวทั้งหมดของตาราง EMPLOYEE โดยใช้แบบสอบถาม SELECT และจากชุดผลลัพธ์ที่ได้รับในตอนแรกเรากำลังดึงข้อมูลแถวแรกโดยใช้วิธี fetchone () จากนั้นดึงข้อมูลแถวที่เหลือโดยใช้วิธี fetchall ()
import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Retrieving single row
sql = '''SELECT * from EMPLOYEE'''
#Executing the query
cursor.execute(sql)
#Fetching 1st row from the table
result = cursor.fetchone();
print(result)
#Fetching 1st row from the table
result = cursor.fetchall();
print(result)
#Closing the connection
conn.close()
เอาต์พุต
('Krishna', 'Sharma', 19, 'M', 2000.0)
[('Raj', 'Kandukuri', 20, 'M', 7000.0), ('Ramya', 'Ramapriya', 25, 'M', 5000.0)]
ตัวอย่างต่อไปนี้ดึงข้อมูลสองแถวแรกของตาราง EMPLOYEE โดยใช้เมธอด fetchmany ()
ตัวอย่าง
import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Retrieving single row
sql = '''SELECT * from EMPLOYEE'''
#Executing the query
cursor.execute(sql)
#Fetching 1st row from the table
result = cursor.fetchmany(size =2);
print(result)
#Closing the connection
conn.close()
เอาต์พุต
[('Krishna', 'Sharma', 19, 'M', 2000.0), ('Raj', 'Kandukuri', 20, 'M', 7000.0)]
หากคุณต้องการดึงข้อมูลลบหรืออัปเดตแถวเฉพาะของตารางใน MySQL คุณต้องใช้ where clause เพื่อระบุเงื่อนไขเพื่อกรองแถวของตารางสำหรับการดำเนินการ
ตัวอย่างเช่นหากคุณมีคำสั่ง SELECT พร้อมด้วย where clause ระบบจะเรียกเฉพาะแถวที่ตรงตามเงื่อนไขที่ระบุเท่านั้น
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของ WHERE clause -
SELECT column1, column2, columnN
FROM table_name
WHERE [condition]
ตัวอย่าง
สมมติว่าเราได้สร้างตารางใน MySQL โดยใช้ชื่อ EMPLOYEES เป็น -
mysql> CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT
);
Query OK, 0 rows affected (0.36 sec)
และถ้าเราใส่ 4 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -
mysql> INSERT INTO EMPLOYEE VALUES
('Krishna', 'Sharma', 19, 'M', 2000),
('Raj', 'Kandukuri', 20, 'M', 7000),
('Ramya', 'Ramapriya', 25, 'F', 5000),
('Mac', 'Mohan', 26, 'M', 2000);
ตามคำสั่ง MySQL จะดึงข้อมูลของพนักงานที่มีรายได้มากกว่า 4000
mysql> SELECT * FROM EMPLOYEE WHERE INCOME > 4000;
+------------+-----------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE | SEX | INCOME |
+------------+-----------+------+------+--------+
| Raj | Kandukuri | 20| M | 7000 |
| Ramya | Ramapriya | 25| F | 5000 |
+------------+-----------+------+------+--------+
2 rows in set (0.00 sec)
WHERE Clause โดยใช้ Python
ในการดึงข้อมูลเฉพาะจากตารางโดยใช้โปรแกรม python -
นำเข้า mysql.connector แพ็คเกจ
สร้างวัตถุการเชื่อมต่อโดยใช้ mysql.connector.connect() วิธีการโดยส่งชื่อผู้ใช้รหัสผ่านโฮสต์ (ค่าดีฟอลต์ทางเลือก: localhost) และฐานข้อมูล (ทางเลือก) เป็นพารามิเตอร์
สร้างวัตถุเคอร์เซอร์โดยเรียกใช้ไฟล์ cursor() วิธีการบนวัตถุการเชื่อมต่อที่สร้างขึ้นด้านบน
จากนั้นดำเนินการคำสั่งSELECTด้วยคำสั่ง WHEREโดยส่งเป็นพารามิเตอร์ไปยังexecute() วิธี.
ตัวอย่าง
ตัวอย่างต่อไปนี้สร้างตารางชื่อพนักงานและเติมข้อมูล จากนั้นใช้คำสั่ง where จะดึงข้อมูลที่มีค่าอายุน้อยกว่า 23
import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
sql = '''CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT
)'''
cursor.execute(sql)
#Populating the table
insert_stmt = "INSERT INTO EMPLOYEE (
FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (%s, %s, %s, %s, %s
)"
data = [
('Krishna', 'Sharma', 19, 'M', 2000),
('Raj', 'Kandukuri', 20, 'M', 7000),
('Ramya', 'Ramapriya', 25, 'F', 5000),
('Mac', 'Mohan', 26, 'M', 2000)
]
cursor.executemany(insert_stmt, data)
conn.commit()
#Retrieving specific records using the where clause
cursor.execute("SELECT * from EMPLOYEE WHERE AGE <23")
print(cursor.fetchall())
#Closing the connection
conn.close()
เอาต์พุต
[('Krishna', 'Sharma', 19, 'M', 2000.0), ('Raj', 'Kandukuri', 20, 'M', 7000.0)]
ในขณะที่ดึงข้อมูลโดยใช้แบบสอบถาม SELECT คุณสามารถจัดเรียงผลลัพธ์ตามลำดับที่ต้องการ (จากน้อยไปมากหรือมากไปหาน้อย) โดยใช้คำสั่ง OrderBy ตามค่าเริ่มต้นอนุประโยคนี้จะเรียงลำดับผลลัพธ์จากน้อยไปหามากหากคุณต้องการจัดเรียงจากมากไปหาน้อยคุณจำเป็นต้องใช้ "DESC" อย่างชัดเจน
ไวยากรณ์
ต่อไปนี้เป็นรายการคอลัมน์เลือกไวยากรณ์
FROM table_name
[WHERE condition]
[ORDER BY column1, column2,.. columnN] [ASC | DESC]; of the ORDER BY clause:
ตัวอย่าง
สมมติว่าเราได้สร้างตารางใน MySQL โดยใช้ชื่อ EMPLOYEES เป็น -
mysql> CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT);
Query OK, 0 rows affected (0.36 sec)
และถ้าเราใส่ 4 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -
mysql> INSERT INTO EMPLOYEE VALUES
('Krishna', 'Sharma', 19, 'M', 2000),
('Raj', 'Kandukuri', 20, 'M', 7000),
('Ramya', 'Ramapriya', 25, 'F', 5000),
('Mac', 'Mohan', 26, 'M', 2000);
คำสั่งต่อไปนี้จะดึงเนื้อหาของตารางพนักงานตามลำดับอายุจากน้อยไปมาก
mysql> SELECT * FROM EMPLOYEE ORDER BY AGE;
+------------+-----------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE | SEX | INCOME |
+------------+-----------+------+------+--------+
| Krishna | Sharma | 19| M | 2000 |
| Raj | Kandukuri | 20| M | 7000 |
| Ramya | Ramapriya | 25| F | 5000 |
| Mac | Mohan | 26| M | 2000 |
+------------+-----------+------+------+--------+
4 rows in set (0.04 sec)
คุณยังสามารถดึงข้อมูลจากมากไปหาน้อยโดยใช้ DESC เป็น -
mysql> SELECT * FROM EMPLOYEE ORDER BY FIRST_NAME, INCOME DESC;
+------------+-----------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE | SEX | INCOME |
+------------+-----------+------+------+--------+
| Krishna | Sharma | 19| M | 2000 |
| Mac | Mohan | 26| M | 2000 |
| Raj | Kandukuri | 20| M | 7000 |
| Ramya | Ramapriya | 25| F | 5000 |
+------------+-----------+------+------+--------+
4 rows in set (0.00 sec)
ORDER BY Clause โดยใช้ Python
ในการดึงเนื้อหาของตารางตามลำดับที่ระบุให้เรียกใช้ไฟล์ execute() วิธีการบนวัตถุเคอร์เซอร์และส่งผ่านคำสั่ง SELECT พร้อมกับคำสั่ง ORDER BY เป็นพารามิเตอร์ไป
ตัวอย่าง
ในตัวอย่างต่อไปนี้เรากำลังสร้างตารางที่มีชื่อและพนักงานเติมข้อมูลและดึงข้อมูลกลับมาตามลำดับอายุ (จากน้อยไปมาก) โดยใช้คำสั่ง ORDER BY
import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
sql = '''CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT
)'''
cursor.execute(sql)
#Populating the table
insert_stmt = "INSERT INTO EMPLOYEE
(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (%s, %s, %s, %s, %s)"
data = [
('Krishna', 'Sharma', 26, 'M', 2000),
('Raj', 'Kandukuri', 20, 'M', 7000),
('Ramya', 'Ramapriya', 29, 'F', 5000),
('Mac', 'Mohan', 26, 'M', 2000)
]
cursor.executemany(insert_stmt, data)
conn.commit()
#Retrieving specific records using the ORDER BY clause
cursor.execute("SELECT * from EMPLOYEE ORDER BY AGE")
print(cursor.fetchall())
#Closing the connection
conn.close()
เอาต์พุต
[
('Raj', 'Kandukuri', 20, 'M', 7000.0),
('Krishna', 'Sharma', 26, 'M', 2000.0),
('Mac', 'Mohan', 26, 'M', 2000.0),
('Ramya', 'Ramapriya', 29, 'F', 5000.0)
]
ในทำนองเดียวกันคุณสามารถดึงข้อมูลจากตารางจากมากไปหาน้อยโดยใช้คำสั่ง ORDER BY
ตัวอย่าง
import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Retrieving specific records using the ORDERBY clause
cursor.execute("SELECT * from EMPLOYEE ORDER BY INCOME DESC")
print(cursor.fetchall())
#Closing the connection
conn.close()
เอาต์พุต
[
('Raj', 'Kandukuri', 20, 'M', 7000.0),
('Ramya', 'Ramapriya', 29, 'F', 5000.0),
('Krishna', 'Sharma', 26, 'M', 2000.0),
('Mac', 'Mohan', 26, 'M', 2000.0)
]
UPDATE การดำเนินการกับฐานข้อมูลใด ๆ จะอัปเดตระเบียนตั้งแต่หนึ่งรายการขึ้นไปซึ่งมีอยู่แล้วในฐานข้อมูล คุณสามารถอัปเดตค่าของระเบียนที่มีอยู่ใน MySQL โดยใช้คำสั่ง UPDATE ในการอัปเดตแถวเฉพาะคุณต้องใช้คำสั่ง WHERE ควบคู่ไปด้วย
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง UPDATE ใน MySQL -
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
คุณสามารถรวม N จำนวนเงื่อนไขโดยใช้ตัวดำเนินการ AND หรือ OR
ตัวอย่าง
สมมติว่าเราได้สร้างตารางใน MySQL โดยใช้ชื่อ EMPLOYEES เป็น -
mysql> CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT
);
Query OK, 0 rows affected (0.36 sec)
และถ้าเราใส่ 4 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -
mysql> INSERT INTO EMPLOYEE VALUES
('Krishna', 'Sharma', 19, 'M', 2000),
('Raj', 'Kandukuri', 20, 'M', 7000),
('Ramya', 'Ramapriya', 25, 'F', 5000),
('Mac', 'Mohan', 26, 'M', 2000);
ตามคำสั่ง MySQL จะเพิ่มอายุของพนักงานชายทุกคนขึ้นหนึ่งปี -
mysql> UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = 'M';
Query OK, 3 rows affected (0.06 sec) 9.
Rows matched: 3 Changed: 3 Warnings: 0
หากคุณดึงเนื้อหาของตารางคุณจะเห็นค่าที่อัปเดตเป็น -
mysql> select * from EMPLOYEE;
+------------+-----------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE | SEX | INCOME |
+------------+-----------+------+------+--------+
| Krishna | Sharma | 20| M | 2000 |
| Raj | Kandukuri | 21| M | 7000 |
| Ramya | Ramapriya | 25| F | 5000 |
| Mac | Mohan | 27| M | 2000 |
+------------+-----------+------+------+--------+
4 rows in set (0.00 sec)
การอัปเดตเนื้อหาของตารางโดยใช้ Python
หากต้องการอัปเดตระเบียนในตารางใน MySQL โดยใช้ python -
นำเข้า mysql.connector แพ็คเกจ
สร้างวัตถุการเชื่อมต่อโดยใช้ mysql.connector.connect() วิธีการโดยส่งชื่อผู้ใช้รหัสผ่านโฮสต์ (ค่าดีฟอลต์ทางเลือก: localhost) และฐานข้อมูล (ทางเลือก) เป็นพารามิเตอร์
สร้างวัตถุเคอร์เซอร์โดยเรียกใช้ไฟล์ cursor() วิธีการบนวัตถุการเชื่อมต่อที่สร้างขึ้นด้านบน
จากนั้นรันคำสั่งUPDATEโดยส่งเป็นพารามิเตอร์ไปยังไฟล์execute() วิธี.
ตัวอย่าง
ตัวอย่างต่อไปนี้ทำให้อายุของผู้ชายทุกคนเพิ่มขึ้นหนึ่งปี
import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Preparing the query to update the records
sql = '''UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = 'M' '''
try:
# Execute the SQL command
cursor.execute(sql)
# Commit your changes in the database
conn.commit()
except:
# Rollback in case there is any error
conn.rollback()
#Retrieving data
sql = '''SELECT * from EMPLOYEE'''
#Executing the query
cursor.execute(sql)
#Displaying the result
print(cursor.fetchall())
#Closing the connection
conn.close()
เอาต์พุต
[
('Krishna', 'Sharma', 22, 'M', 2000.0),
('Raj', 'Kandukuri', 23, 'M', 7000.0),
('Ramya', 'Ramapriya', 26, 'F', 5000.0)
]
ในการลบบันทึกจากตาราง MySQL คุณต้องใช้ไฟล์ DELETE FROMคำให้การ. ในการลบระเบียนเฉพาะคุณต้องใช้ WHERE clause ควบคู่ไปด้วย
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของแบบสอบถาม DELETE ใน MYSQL -
DELETE FROM table_name [WHERE Clause]
ตัวอย่าง
สมมติว่าเราได้สร้างตารางใน MySQL โดยใช้ชื่อ EMPLOYEES เป็น -
mysql> CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT
);
Query OK, 0 rows affected (0.36 sec)
และถ้าเราใส่ 4 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -
mysql> INSERT INTO EMPLOYEE VALUES
('Krishna', 'Sharma', 19, 'M', 2000),
('Raj', 'Kandukuri', 20, 'M', 7000),
('Ramya', 'Ramapriya', 25, 'F', 5000),
('Mac', 'Mohan', 26, 'M', 2000);
ต่อไปนี้คำสั่ง MySQL การลบบันทึกของพนักงานที่มีFIRST_NAME“แม็ค”
mysql> DELETE FROM EMPLOYEE WHERE FIRST_NAME = 'Mac';
Query OK, 1 row affected (0.12 sec)
หากคุณดึงเนื้อหาของตารางคุณจะเห็นเพียง 3 ระเบียนเนื่องจากเราได้ลบไปแล้ว
mysql> select * from EMPLOYEE;
+------------+-----------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE | SEX | INCOME |
+------------+-----------+------+------+--------+
| Krishna | Sharma | 20| M | 2000 |
| Raj | Kandukuri | 21| M | 7000 |
| Ramya | Ramapriya | 25| F | 5000 |
+------------+-----------+------+------+--------+
3 rows in set (0.00 sec)
หากคุณดำเนินการคำสั่ง DELETE โดยไม่มีคำสั่ง WHERE ระเบียนทั้งหมดจากตารางที่ระบุจะถูกลบ
mysql> DELETE FROM EMPLOYEE;
Query OK, 3 rows affected (0.09 sec)
หากคุณดึงข้อมูลของตารางคุณจะได้ชุดว่างดังที่แสดงด้านล่าง -
mysql> select * from EMPLOYEE;
Empty set (0.00 sec)
การลบบันทึกของตารางโดยใช้ Python
จำเป็นต้องดำเนินการ DELETE เมื่อคุณต้องการลบบางระเบียนออกจากฐานข้อมูลของคุณ
ในการลบระเบียนในตาราง -
นำเข้า mysql.connector แพ็คเกจ
สร้างวัตถุการเชื่อมต่อโดยใช้ mysql.connector.connect() วิธีการโดยส่งชื่อผู้ใช้รหัสผ่านโฮสต์ (ค่าดีฟอลต์ทางเลือก: localhost) และฐานข้อมูล (ทางเลือก) เป็นพารามิเตอร์
สร้างวัตถุเคอร์เซอร์โดยเรียกใช้ cursor () วิธีการบนวัตถุการเชื่อมต่อที่สร้างไว้ด้านบน
จากนั้นเรียกใช้ไฟล์ DELETE คำสั่งโดยส่งเป็นพารามิเตอร์ไปยัง execute() วิธี.
ตัวอย่าง
โปรแกรมต่อไปนี้จะลบบันทึกทั้งหมดจาก EMPLOYEE ที่มีอายุมากกว่า 20 -
import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Retrieving single row
print("Contents of the table: ")
cursor.execute("SELECT * from EMPLOYEE")
print(cursor.fetchall())
#Preparing the query to delete records
sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (25)
try:
# Execute the SQL command
cursor.execute(sql)
# Commit your changes in the database
conn.commit()
except:
# Roll back in case there is any error
conn.rollback()
#Retrieving data
print("Contents of the table after delete operation ")
cursor.execute("SELECT * from EMPLOYEE")
print(cursor.fetchall())
#Closing the connection
conn.close()
เอาต์พุต
Contents of the table:
[
('Krishna', 'Sharma', 22, 'M', 2000.0),
('Raj', 'Kandukuri', 23, 'M', 7000.0),
('Ramya', 'Ramapriya', 26, 'F', 5000.0),
('Mac', 'Mohan', 20, 'M', 2000.0),
('Ramya', 'Rama priya', 27, 'F', 9000.0)
]
Contents of the table after delete operation:
[
('Krishna', 'Sharma', 22, 'M', 2000.0),
('Raj', 'Kandukuri', 23, 'M', 7000.0),
('Mac', 'Mohan', 20, 'M', 2000.0)
]
คุณสามารถลบทั้งตารางโดยใช้ไฟล์ DROP TABLEคำให้การ. คุณเพียงแค่ระบุชื่อของตารางที่คุณต้องการลบ
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง DROP TABLE ใน MySQL -
DROP TABLE table_name;
ตัวอย่าง
ก่อนลบตารางรับรายการตารางโดยใช้คำสั่ง SHOW TABLES ดังนี้ -
mysql> SHOW TABLES;
+-----------------+
| Tables_in_mydb |
+-----------------+
| contact |
| cricketers_data |
| employee |
| sample |
| tutorials |
+-----------------+
5 rows in set (0.00 sec)
คำสั่งต่อไปนี้จะลบตารางชื่อตัวอย่างออกจากฐานข้อมูลทั้งหมด -
mysql> DROP TABLE sample;
Query OK, 0 rows affected (0.29 sec)
เนื่องจากเราได้ลบตารางชื่อตัวอย่างออกจาก MySQL แล้วหากคุณได้รับรายชื่อตารางอีกครั้งคุณจะไม่พบชื่อตารางในตารางนั้น
mysql> SHOW TABLES;
+-----------------+
| Tables_in_mydb |
+-----------------+
| contact |
| cricketers_data |
| employee |
| tutorials |
+-----------------+
4 rows in set (0.00 sec)
การลบตารางโดยใช้ Python
คุณสามารถวางตารางได้ทุกเมื่อที่ต้องการโดยใช้คำสั่ง DROP ของ MYSQL แต่คุณต้องระมัดระวังให้มากในขณะที่ลบตารางที่มีอยู่เนื่องจากข้อมูลที่สูญหายจะไม่สามารถกู้คืนได้หลังจากลบตาราง
ในการวางตารางจากฐานข้อมูล MYSQL โดยใช้ python ให้เรียกใช้ไฟล์ execute() วิธีการบนวัตถุเคอร์เซอร์และส่งคำสั่ง drop เป็นพารามิเตอร์ไป
ตัวอย่าง
ตารางต่อไปนี้จะดร็อปตารางชื่อ EMPLOYEE ออกจากฐานข้อมูล
import mysql.connector
#establishing the connection conn = mysql.connector.connect(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method cursor = conn.cursor()
#Retrieving the list of tables print("List of tables in the database: ")
cursor.execute("SHOW Tables") print(cursor.fetchall())
#Doping EMPLOYEE table if already exists cursor.execute("DROP TABLE EMPLOYEE")
print("Table dropped... ")
#Retrieving the list of tables print(
"List of tables after dropping the EMPLOYEE table: "
)
cursor.execute("SHOW Tables") print(cursor.fetchall())
#Closing the connection
conn.close()
เอาต์พุต
List of tables in the database:
[('employee',), ('employeedata',), ('sample',), ('tutorials',)]
Table dropped...
List of tables after dropping the EMPLOYEE table:
[('employeedata',), ('sample',), ('tutorials',)]
วางตารางเฉพาะเมื่อมีอยู่
หากคุณพยายามวางตารางที่ไม่มีอยู่ในฐานข้อมูลข้อผิดพลาดจะเกิดขึ้นเมื่อ -
mysql.connector.errors.ProgrammingError: 1051 (42S02): Unknown table 'mydb.employee'
คุณสามารถป้องกันข้อผิดพลาดนี้ได้โดยการตรวจสอบว่ามีตารางอยู่ก่อนที่จะลบหรือไม่โดยการเพิ่ม IF EXISTS ในคำสั่ง DELETE
Example
import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Retrieving the list of tables
print("List of tables in the database: ")
cursor.execute("SHOW Tables")
print(cursor.fetchall())
#Doping EMPLOYEE table if already exists
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
print("Table dropped... ")
#Retrieving the list of tables
print("List of tables after dropping the EMPLOYEE table: ")
cursor.execute("SHOW Tables")
print(cursor.fetchall())
#Closing the connection
conn.close()
Output
List of tables in the database:
[('employeedata',), ('sample',), ('tutorials',)]
Table dropped...
List of tables after dropping the EMPLOYEE table:
[('employeedata',), ('sample',),
('tutorials',)]
ในขณะที่ดึงเร็กคอร์ดหากคุณต้องการ จำกัด ด้วยหมายเลขเฉพาะคุณสามารถทำได้โดยใช้ประโยค LIMIT ของ MYSQL
ตัวอย่าง
สมมติว่าเราได้สร้างตารางใน MySQL โดยใช้ชื่อ EMPLOYEES เป็น -
mysql> CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT
);
Query OK, 0 rows affected (0.36 sec)
และถ้าเราใส่ 4 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -
mysql> INSERT INTO EMPLOYEE VALUES
('Krishna', 'Sharma', 19, 'M', 2000),
('Raj', 'Kandukuri', 20, 'M', 7000),
('Ramya', 'Ramapriya', 25, 'F', 5000),
('Mac', 'Mohan', 26, 'M', 2000);
คำสั่ง SQL ต่อไปนี้จะดึงข้อมูลสองระเบียนแรกของตารางพนักงานโดยใช้ส่วนคำสั่ง LIMIT
SELECT * FROM EMPLOYEE LIMIT 2;
+------------+-----------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE | SEX | INCOME |
+------------+-----------+------+------+--------+
| Krishna | Sharma | 19| M | 2000 |
| Raj | Kandukuri | 20| M | 7000 |
+------------+-----------+------+------+--------+
2 rows in set (0.00 sec)
จำกัด ประโยคโดยใช้ Python
หากคุณเรียกใช้ไฟล์ execute() วิธีการบนวัตถุเคอร์เซอร์โดยการส่งแบบสอบถาม SELECT พร้อมกับส่วนคำสั่ง LIMIT คุณสามารถเรียกจำนวนระเบียนที่ต้องการ
ตัวอย่าง
ตัวอย่าง python ต่อไปนี้จะสร้างและเติมข้อมูลในตารางที่มีชื่อ EMPLOYEE และโดยใช้ส่วน LIMIT จะดึงข้อมูลสองระเบียนแรกของตาราง
import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Retrieving single row
sql = '''SELECT * from EMPLOYEE LIMIT 2'''
#Executing the query
cursor.execute(sql)
#Fetching the data
result = cursor.fetchall();
print(result)
#Closing the connection
conn.close()
เอาต์พุต
[('Krishna', 'Sharma', 26, 'M', 2000.0), ('Raj', 'Kandukuri', 20, 'M', 7000.0)]
จำกัด ด้วย OFFSET
หากคุณต้องการ จำกัด ระเบียนโดยเริ่มจากระเบียนที่ n (ไม่ใช่ลำดับที่ 1) คุณสามารถทำได้โดยใช้ OFFSET ร่วมกับ LIMIT
Example
import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Retrieving single row
sql = '''SELECT * from EMPLOYEE LIMIT 2 OFFSET 2'''
#Executing the query
cursor.execute(sql)
#Fetching the data
result = cursor.fetchall();
print(result)
#Closing the connection
conn.close()
Output
[('Ramya', 'Ramapriya', 29, 'F', 5000.0), ('Mac', 'Mohan', 26, 'M', 2000.0)]
เมื่อคุณแบ่งข้อมูลออกเป็นสองตารางแล้วคุณสามารถดึงเรกคอร์ดที่รวมกันจากสองตารางนี้โดยใช้ Joins
ตัวอย่าง
สมมติว่าเราได้สร้างตารางชื่อ EMPLOYEE และเติมข้อมูลลงในตารางดังที่แสดงด้านล่าง -
mysql> CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT,
CONTACT INT
);
Query OK, 0 rows affected (0.36 sec)
INSERT INTO Employee VALUES
('Ramya', 'Rama Priya', 27, 'F', 9000, 101),
('Vinay', 'Bhattacharya', 20, 'M', 6000, 102),
('Sharukh', 'Sheik', 25, 'M', 8300, 103),
('Sarmista', 'Sharma', 26, 'F', 10000, 104),
('Trupthi', 'Mishra', 24, 'F', 6000, 105);
Query OK, 5 rows affected (0.08 sec)
Records: 5 Duplicates: 0 Warnings: 0
จากนั้นถ้าเราสร้างตารางอื่นและเติมข้อมูลเป็น -
CREATE TABLE CONTACT(
ID INT NOT NULL,
EMAIL CHAR(20) NOT NULL,
PHONE LONG,
CITY CHAR(20)
);
Query OK, 0 rows affected (0.49 sec)
INSERT INTO CONTACT (ID, EMAIL, CITY) VALUES
(101, '[email protected]', 'Hyderabad'),
(102, '[email protected]', 'Vishakhapatnam'),
(103, '[email protected]', 'Pune'),
(104, '[email protected]', 'Mumbai');
Query OK, 4 rows affected (0.10 sec)
Records: 4 Duplicates: 0 Warnings: 0
คำสั่งต่อไปนี้ดึงข้อมูลที่รวมค่าในสองตารางนี้ -
mysql> SELECT * from EMPLOYEE INNER JOIN CONTACT ON EMPLOYEE.CONTACT = CONTACT.ID;
+------------+--------------+------+------+--------+---------+-----+--------------------+-------+----------------+
| FIRST_NAME | LAST_NAME | AGE | SEX | INCOME | CONTACT | ID | EMAIL | PHONE | CITY |
+------------+--------------+------+------+--------+---------+-----+--------------------+-------+----------------+
| Ramya | Rama Priya | 27 | F | 9000 | 101 | 101 | [email protected] | NULL | Hyderabad |
| Vinay | Bhattacharya | 20 | M | 6000 | 102 | 102 | [email protected] | NULL | Vishakhapatnam |
| Sharukh | Sheik | 25 | M | 8300 | 103 | 103 | [email protected] | NULL | Pune |
| Sarmista | Sharma | 26 | F | 10000 | 104 | 104 | [email protected] | NULL | Mumbai |
+------------+--------------+------+------+--------+---------+-----+--------------------+-------+----------------+
4 rows in set (0.00 sec)
MYSQL เข้าร่วมโดยใช้ Python
ตัวอย่างต่อไปนี้ดึงข้อมูลจากสองตารางข้างต้นรวมกันโดยคอลัมน์ผู้ติดต่อของตารางพนักงานและคอลัมน์ ID ของตาราง CONTACT
ตัวอย่าง
import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Retrieving single row
sql = '''SELECT * from EMPLOYEE INNER JOIN CONTACT ON EMPLOYEE.CONTACT = CONTACT.ID'''
#Executing the query
cursor.execute(sql)
#Fetching 1st row from the table
result = cursor.fetchall();
print(result)
#Closing the connection
conn.close()
เอาต์พุต
[
('Krishna', 'Sharma', 26, 'M', 2000, 101, 101, '[email protected]', 9848022338, 'Hyderabad'),
('Raj', 'Kandukuri', 20, 'M', 7000, 102, 102, '[email protected]', 9848022339, 'Vishakhapatnam'),
('Ramya', 'Ramapriya', 29, 'F', 5000, 103, 103, '[email protected]', 9848022337, 'Pune'),
('Mac', 'Mohan', 26, 'M', 2000, 104, 104, '[email protected]', 9848022330, 'Mumbai')
]
MySQLCursor ของ mysql-connector-python (และไลบรารีที่คล้ายกัน) ใช้เพื่อดำเนินการคำสั่งเพื่อสื่อสารกับฐานข้อมูล MySQL
ใช้วิธีการของมันคุณสามารถเรียกใช้คำสั่ง SQL ดึงข้อมูลจากชุดผลลัพธ์ขั้นตอนการโทร
คุณสามารถสร้าง Cursor วัตถุโดยใช้เคอร์เซอร์ () วิธีการของวัตถุ / คลาสการเชื่อมต่อ
ตัวอย่าง
import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
วิธีการ
ต่อไปนี้เป็นวิธีการต่างๆที่จัดเตรียมโดยคลาส / อ็อบเจ็กต์ Cursor
ซีเนียร์ No | วิธีการและคำอธิบาย |
---|---|
1 | callproc() วิธีนี้ใช้เพื่อเรียกขั้นตอนฐานข้อมูล MySQL ที่มีอยู่ |
2 | close() วิธีนี้ใช้เพื่อปิดวัตถุเคอร์เซอร์ปัจจุบัน |
3 | Info() วิธีนี้ให้ข้อมูลเกี่ยวกับแบบสอบถามสุดท้าย |
4 | executemany() วิธีนี้ยอมรับชุดรายการพารามิเตอร์ เตรียมแบบสอบถาม MySQL และดำเนินการกับพารามิเตอร์ทั้งหมด |
5 | execute() วิธีนี้ยอมรับแบบสอบถาม MySQL เป็นพารามิเตอร์และดำเนินการค้นหาที่กำหนด |
6 | fetchall() วิธีนี้จะดึงข้อมูลแถวทั้งหมดในชุดผลลัพธ์ของแบบสอบถามและส่งกลับเป็นรายการสิ่งที่เพิ่มขึ้น (หากเราดำเนินการสิ่งนี้หลังจากเรียกข้อมูลไม่กี่แถวมันจะส่งคืนแถวที่เหลือ) |
7 | fetchone() วิธีนี้ดึงข้อมูลแถวถัดไปจากผลลัพธ์ของคิวรีและส่งกลับเป็นทูเพิล |
8 | fetchmany() วิธีนี้คล้ายกับ fetchone () แต่จะดึงข้อมูลชุดถัดไปของแถวในชุดผลลัพธ์ของแบบสอบถามแทนที่จะเป็นแถวเดียว |
9 | fetchwarnings() วิธีนี้ส่งคืนคำเตือนที่สร้างขึ้นโดยแบบสอบถามที่เรียกใช้ล่าสุด |
คุณสมบัติ
ต่อไปนี้เป็นคุณสมบัติของคลาส Cursor -
ซีเนียร์ No | คุณสมบัติและคำอธิบาย |
---|---|
1 | column_names นี่คือคุณสมบัติแบบอ่านอย่างเดียวซึ่งส่งคืนรายการที่มีชื่อคอลัมน์ของชุดผลลัพธ์ |
2 | description นี่เป็นคุณสมบัติแบบอ่านอย่างเดียวซึ่งส่งคืนรายการที่มีคำอธิบายของคอลัมน์ในชุดผลลัพธ์ |
3 | lastrowid นี่เป็นคุณสมบัติแบบอ่านอย่างเดียวหากมีคอลัมน์ที่เพิ่มขึ้นโดยอัตโนมัติในตารางค่านี้จะส่งคืนค่าที่สร้างขึ้นสำหรับคอลัมน์นั้นในการดำเนินการ INSERT หรือ UPDATE ล่าสุด |
4 | rowcount ส่งคืนจำนวนแถวที่ส่งคืน / อัปเดตในกรณีของการดำเนินการ SELECT และ UPDATE |
5 | statement คุณสมบัตินี้ส่งคืนคำสั่งที่ดำเนินการล่าสุด |