建立數據庫鏈接
能夠使用如下代碼來鏈接數據庫:html
demo_mysql_test.py:
import mysql.connector mydb = mysql.connector.connect( host="localhost",
建立數據庫
建立數據庫使用 "CREATE DATABASE" 語句,如下建立一個名爲 runoob_db 的數據庫:python
demo_mysql_test.py:
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="root", passwd="123456" ) mycursor = mydb.cursor() mycursor.execute("CREATE DATABASE runoob_db")
建立數據庫前咱們也能夠使用 "SHOW DATABASES" 語句來查看數據庫是否存在:mysql
demo_mysql_test.py:
輸出全部數據庫列表:sql
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="root", passwd="123456" ) mycursor = mydb.cursor() mycursor.execute("SHOW DATABASES") for x in mycursor: print(x)
或者咱們能夠直接鏈接數據庫,若是數據庫不存在,會輸出錯誤信息:數據庫
demo_mysql_test.py:
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="root", passwd="123456", database="runoob_db" )
建立數據表
建立數據表使用 "CREATE TABLE" 語句,建立數據表前,須要確保數據庫已存在,如下建立一個名爲 sites 的數據表:ide
demo_mysql_test.py:
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="root", passwd="123456", database="runoob_db" ) mycursor = mydb.cursor() mycursor.execute("CREATE TABLE sites (name VARCHAR(255), url VARCHAR(255))")
執行成功後,咱們能夠看到數據庫建立的數據表 sites,字段爲 name 和 url。url
插入數據
插入數據使用 "INSERT INTO" 語句:spa
demo_mysql_test.py:
向 sites 表插入一條記錄。code
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="root", passwd="123456", database="runoob_db" ) mycursor = mydb.cursor() sql = "INSERT INTO sites (name, url) VALUES (%s, %s)" val = ("RUNOOB", "https://www.runoob.com") mycursor.execute(sql, val) mydb.commit()
執行代碼,輸出結果爲:htm
1 記錄插入成功
查詢數據
查詢數據使用 SELECT 語句:
排序
查詢結果排序能夠使用 ORDER BY 語句,默認的排序方式爲升序,關鍵字爲 ASC,若是要設置降序排序,能夠設置關鍵字 DESC。
Limit
若是咱們要設置查詢的數據量,能夠經過 "LIMIT" 語句來指定
也能夠指定起始位置,使用的關鍵字是 OFFSET:
刪除記錄
刪除記錄使用 "DELETE FROM" 語句:
demo_mysql_test.py
刪除 name 爲 stackoverflow 的記錄:
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="root", passwd="123456", database="runoob_db" ) mycursor = mydb.cursor() sql = "DELETE FROM sites WHERE name = 'stackoverflow'" mycursor.execute(sql) mydb.commit() print(mycursor.rowcount, " 條記錄刪除")
執行代碼,輸出結果爲:
注意:要慎重使用刪除語句,刪除語句要確保指定了 WHERE 條件語句,不然會致使整表數據被刪除。
爲了防止數據庫查詢發生 SQL 注入的攻擊,咱們能夠使用 %s 佔位符來轉義刪除語句的條件:
demo_mysql_test.py
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="root", passwd="123456", database="runoob_db" ) mycursor = mydb.cursor() sql = "DELETE FROM sites WHERE name = %s" na = ("stackoverflow", ) mycursor.execute(sql, na) mydb.commit() print(mycursor.rowcount, " 條記錄刪除")
執行代碼,輸出結果爲:
更新表數據
數據表更新使用 "UPDATE" 語句:
demo_mysql_test.py
將 name 爲 Zhihu 的字段數據改成 ZH:
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="root", passwd="123456", database="runoob_db" ) mycursor = mydb.cursor() sql = "UPDATE sites SET name = 'ZH' WHERE name = 'Zhihu'" mycursor.execute(sql) mydb.commit() print(mycursor.rowcount, " 條記錄被修改")
執行代碼,輸出結果爲:
注意:UPDATE 語句要確保指定了 WHERE 條件語句,不然會致使整表數據被更新。
爲了防止數據庫查詢發生 SQL 注入的攻擊,咱們能夠使用 %s 佔位符來轉義更新語句的條件:
demo_mysql_test.py
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="root", passwd="123456", database="runoob_db" ) mycursor = mydb.cursor() sql = "UPDATE sites SET name = %s WHERE name = %s" val = ("Zhihu", "ZH") mycursor.execute(sql, val) mydb.commit() print(mycursor.rowcount, " 條記錄被修改")
執行代碼,輸出結果爲:
刪除表
刪除表使用 "DROP TABLE" 語句, IF EXISTS 關鍵字是用於判斷表是否存在,只有在存在的狀況才刪除:
demo_mysql_test.py
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="root", passwd="123456", database="runoob_db" ) mycursor = mydb.cursor() sql = "DROP TABLE IF EXISTS sites"