Home >> Blog >> Python 執行 MySQL 資料庫 Python MySQL 簡單教學

Python 執行 MySQL 資料庫 Python MySQL 簡單教學

  • 連接到數據庫。
  • 為您的數據庫創建一個對象。
  • 執行SQL查詢。
  • 從結果中獲取記錄。
  • 如果您在表中進行任何更改,請通知數據庫。

1.安裝MySQL

MySQL是最流行的數據庫之一。

從MySQL 的官方網站下載並安裝MySQL。您需要安裝MySQL服務器才能遵循本教程。

接下來,您必須為Python安裝mysql.connector。我們需要mysql.connector將Python 腳本連接到MySQL數據庫。從這裡下載mysql.connector並將其安裝在您的計算機上。

現在,使用以下代碼檢查您是否正確安裝了mysql.connector 。

import mysql .connector

如果上面的代碼運行沒有任何錯誤,那麼你已經成功安裝了mysql.connector,並且可以使用了。

2.連接和創造

現在,我們將使用MySQL的用戶名和密碼連接到數據庫。如果您不記得您的用戶名或密碼,請使用密碼創建一個新用戶。

要創建新用戶,請參閱MySQL官方文檔。

現在,使用您的用戶名和密碼連接到數據庫。

## Connecting to the database

## importing 'mysql.connector' as mysql for convenient
import mysql.connector as mysql

## connecting to the database using 'connect()' method
## it takes 3 required parameters 'host', 'user', 'passwd'
db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms"
)

print(db) # it will print a connection object if everything is fine

< mysql.connector .connection_cext.CMySQLConnection object at 0x0000020C26A84C50 >

就是這樣,您現在已經連接到MySQL數據庫。

現在,我們將創建一個名為datacamp的數據庫。

要在MySQL中創建數據庫,我們使用CREATE DATABASE database_name語句。



import mysql. connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms"
)

## creating an instance of 'cursor' class which is used to execute the 'SQL' statements in 'Python'
cursor = db.cursor()

## creating a databse called 'datacamp'
## 'execute()' method is used to compile a 'SQL' statement
## below statement is used to create tha 'datacamp' database
cursor. execute("CREATE DATABASE datacamp")

如果數據庫已經存在,您將收到錯誤消息。確保數據庫不存在。

使用以下代碼查看MySQL中存在的所有數據庫。

要查看所有數據庫,我們使用SHOW DATABASES語句。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms"
)

cursor = db.cursor()

## executing the statement using 'execute()' method
cursor .execute("SHOW DATABASES")

## 'fetchall()' method fetches all the rows from the last executed statement
databases = cursor. fetchall() ## it returns a list of all databases present

## printing the list of databases
print (databases)

## showing one by one database
for database in databases:
print(database)

[ ('datacamp',), ('information_schema',), ('mysql',), ('performance_schema',), ('sakila',), ('sys',), ('world',)]
( 'datacamp',)
( 'information_schema',)
( 'mysql',)
( 'performance_schema',)
( 'sakila',)
( 'sys',)
('world',)

2.2. 創建表

在數據庫中創建表來存儲信息。在創建表之前,我們必須先選擇一個數據庫。

運行以下代碼,以選擇我們在一分鐘前創建的datacamp數據庫。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

如果數據庫存在,上面的代碼將毫無錯誤地執行。現在,您已連接到名為datacamp的數據庫。

使用CREATE TABLE table_name在選定的數據庫中創建表。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

cursor = db.cursor()

## creating a table called 'users' in the 'datacamp' database
cursor.execute("CREATE TABLE users ( name VARCHAR(255), user_name VARCHAR(255))")

您已成功在datacamp數據庫中創建了表users 。使用SHOW TABLES語句查看數據庫中存在的所有表。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

cursor = db.cursor()

## getting all the tables which are present in 'datacamp' database
cursor.execute("SHOW TABLES")

tables = cursor.fetchall() ## it returns list of tables present in the database

## showing all the tables one by one
for table in tables:
print(table)

('users',)

2.3. 首要的關鍵

主鍵:-它是表中的唯一值。它有助於在表中唯一地找到每一行。

要創建主鍵,我們在創建表時使用PRIMARY KEY語句。

語句INT AUTO_INCREMENT PRIMARY KEY用於以從 1 開始的數字唯一標識每一行。

讓我們看看如何為表創建主鍵。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

cursor = db.cursor()

## first we have to 'drop' the table which has already created to create it again with the 'PRIMARY KEY'
## 'DROP TABLE table_name' statement will drop the table from a database
cursor.execute("DROP TABLE users")

## creating the 'users' table again with the 'PRIMARY KEY'
cursor.execute("CREATE TABLE users (id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), user_name VARCHAR(255))")

要查看該表,請運行以下代碼。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

cursor = db.cursor()

## 'DESC table_name' is used to get all columns information
cursor.execute("DESC users")

## it will print all the columns as 'tuples' in a list
print(cursor.fetchall())

[('id', 'int(11)', 'NO', 'PRI', None, 'auto_increment'), ('name', 'varchar(255)', 'YES', '', None, ''), ('user_name', 'varchar(255)', 'YES', '', None, '')]

刪除主鍵

我們使用ALTER TABLE table_name DROP column_name語句刪除具有Primary Key的列。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

cursor = db.cursor()

## dropping the 'id' column
cursor.execute("ALTER TABLE users DROP id")

cursor.execute("DESC users")

print(cursor.fetchall())

[('name', 'varchar(255)', 'YES', '', None, ''), ('user_name', 'varchar(255)', 'YES', '', None, '')]

現在,我們刪除了主鍵列。讓我們看看如何將具有主鍵的列添加到現有表中。

添加主鍵

將主鍵添加到現有表。我們使用ALTER TABLE table_name ADD PRIMARY KEY(column_name)語句將主鍵添加到表中。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

cursor = db.cursor()

## adding 'id' column to the 'users' table
## 'FIRST' keyword in the statement will add a column in the starting of the table
cursor.execute("ALTER TABLE users ADD COLUMN id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST")

cursor.execute("DESC users")

print(cursor.fetchall())

[('id', 'int(11)', 'NO', 'PRI', None, 'auto_increment'), ('name', 'varchar(255)', 'YES', '', None, ''), ('user_name', 'varchar(255)', 'YES', '', None, '')]


3. 插入數據

將數據插入表中以存儲它。使用INSERT INTO table_name(column_names) VALUES(data)語句插入到表中。

插入單行

讓我們看看如何在表格中插入一行。

上面的代碼將在users表中插入一行。

插入多行

讓我們看看如何在表中插入多行。

要將多行插入表中,我們使用executemany()方法。它將包含數據的元組列表作為第二個參數,將查詢作為第一個參數。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

cursor = db.cursor()

## defining the Query
query = "INSERT INTO users (name, user_name) VALUES (%s, %s)"
## storing values in a variable
values = [
("Peter", "peter"),
("Amy", "amy"),
("Michael", "michael"),
("Hennah", "hennah")
]

## executing the query with values
cursor.executemany(query, values)

## to make final output we have to run the 'commit()' method of the database object
db.commit()

print(cursor.rowcount, "records inserted")

上面的代碼在users表中插入了四條記錄。

4. 選擇數據

要從我們使用的表中檢索數據,請使用SELECT column_names FROM table_name語句。

從表中獲取所有記錄

要從表中獲取所有記錄,我們使用*代替列名。讓我們從之前插入的用戶表中獲取所有數據。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

cursor = db.cursor()

## defining the Query
query = "SELECT * FROM users"

## getting records from the table
cursor.execute(query)

## fetching all records from the 'cursor' object
records = cursor.fetchall()

## Showing the data
for record in records:
print(record)

(1, 'Hafeez', 'hafeez')
(2, 'Peter', 'peter')
(3, 'Amy', 'amy')
(4, 'Michael', 'michael')
(5, 'Hennah', 'hennah')

獲取一些列

要從表中選擇某些列,請在語句中的SELECT之後提及列名。讓我們從users表中檢索用戶名列。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

cursor = db.cursor()

## defining the Query
query = "SELECT user_name FROM users"

## getting 'user_name' column from the table
cursor.execute(query)

## fetching all usernames from the 'cursor' object
usernames = cursor.fetchall()

## Showing the data
for username in usernames:
print(username)

('hafeez',)
('peter',)
('amy',)
('michael',)
('hennah',)

您還可以一次檢索多個列,如下所示。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

cursor = db.cursor()

## defining the Query
query = "SELECT name, user_name FROM users"

## getting 'name', 'user_name' columns from the table
cursor.execute(query)

## fetching all records from the 'cursor' object
data = cursor. fetchall()

## Showing the data
for pair in data:
print (pair)
由 DATACAMP 工作區提供支持
複製代碼
('Hafeez', 'hafeez')
('Peter', 'peter')
('Amy', 'amy')
('Michael', 'michael')
('Hennah', 'hennah')

5. 在哪裡

WHERE用於在某些條件下選擇數據。現在,我們將選擇一條 id 為 5 的記錄。

SELECT column_name FROM table_name WHERE 條件語句將用於檢索某些條件下的數據。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

cursor = db.cursor()

## defining the Query
query = "SELECT * FROM users WHERE id = 5"

## getting records from the table
cursor.execute(query)

## fetching all records from the 'cursor' object
records = cursor.fetchall()

## Showing the data
for record in records:
print(record)

(5, 'Hennah', 'hennah')

您可以根據您的數據指定任何條件。

6. 訂購方式

使用ORDER BY以升序或降序對結果進行排序。它默認按升序對結果進行排序,要按降序對結果進行排序,請使用關鍵字DESC。

SELECT column_names FROM table_name ORDER BY column_name語句將用於按列按升序對結果進行排序。

SELECT column_names FROM table_name ORDER BY column_name DESC語句將用於按列按降序對結果進行排序。

使用名稱列按升序對數據進行排序。讓我們看看代碼。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

cursor = db.cursor()

## defining the Query
query = "SELECT * FROM users ORDER BY name"

## getting records from the table
cursor.execute(query)

## fetching all records from the 'cursor' object
records = cursor.fetchall()

## Showing the data
for record in records:
print(record)

(3, 'Amy', 'amy')
(1, 'Hafeez', 'hafeez')
(5, 'Hennah', 'hennah')
(4, 'Michael', 'michael')
(2, 'Peter', 'peter')

按名稱列降序對數據進行排序。讓我們看看代碼。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

cursor = db.cursor()

## defining the Query
query = "SELECT * FROM users ORDER BY name DESC"

## getting records from the table
cursor.execute(query)

## fetching all records from the 'cursor' object
records = cursor.fetchall()

## Showing the data
for record in records:
print(record)

(2, 'Peter', 'peter')
(4, 'Michael', 'michael')
(5, 'Hennah', 'hennah')
(1, 'Hafeez', 'hafeez')
(3, 'Amy', 'amy')

7.刪除

DELETE關鍵字用於從表中刪除記錄。

DELETE FROM table_name WHERE 條件語句用於刪除記錄。如果不指定條件,則將刪除所有記錄。

讓我們從用戶表中刪除一條id 為 5 的記錄。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

cursor = db.cursor()

## defining the Query
query = "DELETE FROM users WHERE id = 5"

## executing the query
cursor.execute(query)

## final step to tell the database that we have changed the table data
db.commit()

通過查詢表中的所有記錄來檢查它是否被刪除。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

cursor = db.cursor()

## defining the Query
query = "SELECT * FROM users"

## getting records from the table
cursor.execute(query)

## fetching all records from the 'cursor' object
records = cursor.fetchall()

## Showing the data
for record in records:
print(record)

(1, 'Hafeez', 'hafeez')
(2, 'Peter', 'peter')
(3, 'Amy', 'amy')
(4, 'Michael', 'michael')

第 5 條記錄被刪除。

8. 更新

UPDATE關鍵字用於更新一條或多條記錄的數據。

UPDATE table_name SET column_name = new_value WHERE 條件語句用於更新特定行的值。

讓我們將第一條記錄的名稱從Hafeez更新為Kareem。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

cursor = db.cursor()

## defining the Query
query = "UPDATE users SET name = 'Kareem' WHERE id = 1"

## executing the query
cursor.execute(query)

## final step to tell the database that we have changed the table data
db.commit()

通過從數據中檢索所有記錄來檢查數據是否已更新。

import mysql.connector as mysql

db = mysql.connect(
host = "localhost",
user = "root",
passwd = "dbms",
database = "datacamp"
)

cursor = db.cursor()

## defining the Query
query = "SELECT * FROM users"

## getting records from the table
cursor.execute(query)

## fetching all records from the 'cursor' object
records = cursor.fetchall()

## Showing the data
for record in records:
print(record)

(1, 'Kareem', 'hafeez')
(2, 'Peter', 'peter')
(3, 'Amy', 'amy')
(4, 'Michael', 'michael')

看,第一條記錄的名稱已更改。

我沒有講數據庫對象的所有方法。您可以使用dir()方法檢查所有方法。

尾註

恭喜!現在,您可以在Python中使用MySQL數據庫。

如果您對本教程有任何疑問,請在評論部分中提及它們,我會幫助您。

在MySQLs 的文檔中了解有關MySQL的更多信息。

從Pythons 的官方文檔學習Python

sql

python

python

python

python

python

mysql

mysql

mysql

mysql

mysql

mysql

cursor execute

教程

pymysql

connector

connector

connector

mysqldb

with conn cursor

執行指令 cursor execute

pymysql connect

pymysql

pymysql

pymysql

pymysql

pymysql

connector

connector

connector

建立connection物件

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料

資料庫

資料庫

資料庫

資料庫

資料庫

資料庫

資料庫

資料庫

資料庫

資料庫

資料庫

資料庫

資料庫

資料庫

資料庫

資料庫

資料庫

資料庫

資料庫

資料庫