Python2中則使用mysqldb
PyMySQL 是在 Python3.x 版本中用於連接 MySQL 服務器的一個庫,遵循 Python 數據庫 API v2.0 規範,幷包含了 pure-Python MySQL 客戶端庫。
看下一篇文章Python3 MySQL二 PyMySQL
數據庫名:atest
表:user
目錄
PyMySQL 是在 Python3.x 版本中用於連接 MySQL 服務器的一個庫,遵循 Python 數據庫 API v2.0 規範,幷包含了 pure-Python MySQL 客戶端庫。
1.連接數據庫
import mysql.connector
anewab = mysql.connector.connect(
host="localhost",
user="root",
passwd=""
)
print(anewab)
2.創建數據庫、創建表
創建數據庫atest
import mysql.connector
anewab = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
)
mycursor = anewab.cursor()
# 創建數據庫
mycursor.execute("CREATE DATABASE atest")
在atest數據庫創建表user
import mysql.connector
anewab = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
# 指定數據庫
database="atest"
)
mycursor = anewab.cursor()
# 創建表
mycursor.execute("create table user(name VARCHAR (10), age integer(3) )")
給已存在的表user設置主鍵
# 設置主鍵
mycursor.execute("alter table user add column id int auto_increment primary key ")
如果表未存在,創建表的同時設置主鍵
mycursor.execute("CREATE TABLE sites (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), url VARCHAR(255))")
3.插入表數據
import mysql.connector
anewab = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
# 指定數據庫
database="atest"
)
mycursor = anewab.cursor()
# 插入數據
sql = "insert into user(name,age) values (%s, %s)"
val = ("陳奕迅", 18)
mycursor.execute(sql, val)
# 數據表內容有更新,必須使用到該語句提交
anewab.commit()
# rowcount只會記錄未被提交的最後一條SQL語句的影響行數
print(mycursor.rowcount, "插入成功")
插入多條數據
# 插入數據
sql = "insert into user(name,age) values (%s, %s)"
val = [
("周杰倫", 18),
("李宇春", 18),
("汪蘇瀧", 18),
("許嵩", 18)
]
# 注意這裏用executemany
mycursor.executemany(sql, val)
anewab.commit()
print(mycursor.rowcount, "插入成功")
獲取插入的ID
mycursor.lastrowid
4.查詢數據
獲取所有用fetchall()
import mysql.connector
anewab = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
# 指定數據庫
database="atest"
)
mycursor = anewab.cursor()
mycursor.execute("select * from user")
myresult = mycursor.fetchall()
for x in myresult:
print(x)
獲取一條可以用fetchone()
mycursor.execute("select * from user")
myresult = mycursor.fetchone()
print(myresult)
爲了防止數據庫查詢發生 SQL 注入的攻擊,我們可以使用 %s 佔位符來轉義查詢
升序
降序 用desc
限制查詢數量:
select * from user limit 3
指定起始位置,使用的關鍵字是 OFFSET:
"select * from user limit 3 offset 2
5.刪除數據
注意:要慎重使用刪除語句,刪除語句要確保指定了 WHERE 條件語句,否則會導致整表數據被刪除。
6.update數據
sql = "update user set name='陳奕迅2' where name = '陳奕迅'"
mycursor.execute(sql)
anewab.commit()
UPDATE 語句要確保指定了 WHERE 條件語句,否則會導致整表數據被更新。
7.刪除表
mycursor.execute("drop table if exists user")
8.刪除數據庫
mycursor.execute("drop database if exists atest")