Python连接MySQL数据库之pymysql模块使用
Python3連接MySQL
本文介紹Python3連接MySQL的第三方庫--PyMySQL的基本使用。
PyMySQL介紹
PyMySQL 是在 Python3.x 版本中用于連接 MySQL 服務器的一個庫,Python2中則使用mysqldb。
Django中也可以使用PyMySQL連接MySQL數據庫。
PyMySQL安裝
#終端中安裝pymysql pip install pymysql
python3.6 使用 pymysql 連接 Mysql 數據庫及 簡單的增刪改查操作
折騰好半天的數據庫連接,由于之前未安裝 pip ,而且自己用的python 版本為3.6. 只能用 pymysql 來連接數據庫,(如果有和我一樣未安裝 pip 的朋友請 點這里http://blog.csdn.net/qq_37176126/article/details/72824404 ),下邊 簡單介紹一下 連接的過程,以及簡單的增刪改查操作。
1.通過 pip 安裝 pymysql
進入 cmd 輸入 pip install pymysql
回車等待安裝完成;
安裝完成后出現如圖相關信息,表示安裝成功。
連接數據庫
MySQL 連接
使用mysql二進制方式連接
您可以使用MySQL二進制方式進入到mysql命令提示符下來連接MySQL數據庫。
實例
以下是從命令行中連接mysql服務器的簡單實例:
#[root@host]# mysql -u root -p #Enter password:******
在登錄成功后會出現 mysql> 命令提示窗口,你可以在上面執行任何 SQL 語句。
以上命令執行后,登錄成功輸出結果如下:
#Welcome to the MySQL monitor. Commands end with ; or g. #Your MySQL connection id is 2854760 to server version: 5.0.9 #Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
在以上實例中,我們使用了root用戶登錄到mysql服務器,當然你也可以使用其他mysql用戶登錄。
如果用戶權限足夠,任何用戶都可以在mysql的命令提示窗口中進行SQL操作。
退出 mysql> 命令提示窗口可以使用 exit 命令,如下所示:
mysql> exit Bye
創建數據庫
#-- 創建一個名為day59的數據庫
cerate database day59;
# -- 使用day59數據庫 use day59;
#-- 創建一個userinfo表 create table userinfo (id int auto_increment primary key,name varchar(10) not null, pwd varchar(18) not null ); #-- 查看表結構是否正確 desc userinfo;
#-- 添加3條測試數據 insert into userinfo (name, pwd) values ("alex", "alex3714"),("xiaohei", "123456"),("yimi", "654321"); #-- 查看數據 select * from userinfo; #-- 根據特定的用戶名和密碼從數據庫中檢索 select * from userinfo where name="alex" and pwd="alex3714";
注意事項
在進行本文以下內容之前需要注意:
你有一個MySQL數據庫,并且已經啟動。
你有可以連接該數據庫的用戶名和密碼
你有一個有權限操作的database
基本使用
# 導入pymysql模塊 import pymysql # 連接database conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”) # 得到一個可以執行SQL語句的光標對象 cursor = conn.cursor() # 定義要執行的SQL語句 sql = """ CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE, age TINYINT NOT NULL )ENGINE=innodb DEFAULT CHARSET=utf8; """ # 執行SQL語句 cursor.execute(sql) # 關閉光標對象 cursor.close() # 關閉數據庫連接 conn.close()
#注意:harset="utf8",中間沒有空格,因為mySql不支持
返回字典格式數據:
# 導入pymysql模塊 import pymysql # 連接database conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”) # 得到一個可以執行SQL語句并且將結果作為字典返回的游標 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 定義要執行的SQL語句 sql = """ CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE, age TINYINT NOT NULL )ENGINE=innodb DEFAULT CHARSET=utf8; """ # 執行SQL語句 cursor.execute(sql) # 關閉光標對象 cursor.close() # 關閉數據庫連接 conn.close()
注意:
charset=“utf8”,編碼不要寫成"utf-8"
數據庫版登錄
增刪改查操作
增
# 導入pymysql模塊 import pymysql # 連接database conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”) # 得到一個可以執行SQL語句的光標對象 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" username = "Alex" age = 18 # 執行SQL語句 cursor.execute(sql, [username, age]) # 提交事務 conn.commit() cursor.close() conn.close()
mysql端:
插入數據失敗回滾
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
username = "Alex"
age = 18
try:
# 執行SQL語句
cursor.execute(sql, [username, age])
# 提交事務
conn.commit()
except Exception as e:
# 有異常,回滾事務
conn.rollback()
cursor.close()
conn.close()
獲取插入數據的ID(關聯操作時會用到)
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
username = "Alex"
age = 18
try:
# 執行SQL語句
cursor.execute(sql, [username, age])
# 提交事務
conn.commit()
# 提交之后,獲取剛插入的數據的ID
last_id = cursor.lastrowid
except Exception as e:
# 有異常,回滾事務
conn.rollback()
cursor.close()
conn.close()
批量執行
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
data = [("Alex", 18), ("Egon", 20), ("Yuan", 21)]
try:
# 批量執行多條插入SQL語句
cursor.executemany(sql, data)
# 提交事務
conn.commit()
except Exception as e:
# 有異常,回滾事務
conn.rollback()
cursor.close()
conn.close()
由于數據庫的編碼格式不一樣所以出現亂碼:
創建數據庫的時候指定編碼需要:
創建列表的時候也要指定一下,避免亂碼:
刪
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
sql = "DELETE FROM USER1 WHERE id=%s;"
try:
cursor.execute(sql, [4])
# 提交事務
conn.commit()
except Exception as e:
# 有異常,回滾事務
conn.rollback()
cursor.close()
conn.close()
改
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
# 修改數據的SQL語句
sql = "UPDATE USER1 SET age=%s WHERE name=%s;"
username = "Alex"
age = 80
try:
# 執行SQL語句
cursor.execute(sql, [age, username])
# 提交事務
conn.commit()
except Exception as e:
# 有異常,回滾事務
conn.rollback()
cursor.close()
conn.close()
查
#查詢操作
import pymysql #導入 pymysql
#打開數據庫連接
db= pymysql.connect(host="localhost",user="root",
password="123456",db="test",port=3307)
# 使用cursor()方法獲取操作游標
cur = db.cursor()
#1.查詢操作
# 編寫sql 查詢語句 user 對應我的表名
sql = "select * from user"
try:
cur.execute(sql) #執行sql語句
results = cur.fetchall() #獲取查詢的所有記錄
print("id","name","password")
#遍歷結果
for row in results :
id = row[0]
name = row[1]
password = row[2]
print(id,name,password)
except Exception as e:
raise e
finally:
db.close() #關閉連接
查詢單條數據
# 導入pymysql模塊 import pymysql # 連接database conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”) # 得到一個可以執行SQL語句的光標對象 cursor = conn.cursor() # 查詢數據的SQL語句 sql = "SELECT id,name,age from USER1 WHERE id=1;" # 執行SQL語句 cursor.execute(sql) # 獲取單條查詢數據 ret = cursor.fetchone() cursor.close() conn.close() # 打印下查詢結果 print(ret)
查詢多條數據
# 導入pymysql模塊 import pymysql # 連接database conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”) # 得到一個可以執行SQL語句的光標對象 cursor = conn.cursor() # 查詢數據的SQL語句 sql = "SELECT id,name,age from USER1;" # 執行SQL語句 cursor.execute(sql) # 獲取多條查詢數據 ret = cursor.fetchall() cursor.close() conn.close() # 打印下查詢結果 print(ret)
進階用法
# 可以獲取指定數量的數據 cursor.fetchmany(3) # 光標按絕對位置移動1 cursor.scroll(1, mode="absolute") # 光標按照相對位置(當前位置)移動1 cursor.scroll(1, mode="relative")
總結
以上是生活随笔為你收集整理的Python连接MySQL数据库之pymysql模块使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 平安福保保是什么
- 下一篇: 斐讯k2路由器恢复出†设置了怎么重置斐讯