Python3使用pymysql,Python2使用mysqldb庫
環境准備
使用pip安裝PyMySQL
pip install PyMySQL
先使用第三方工具連接mysql數據庫,比如navicat連接mysql,參考這篇https://www.cnblogs.com/yoyoketang/p/9994078.html
如下圖連接測試通過,那么連接數據庫至少應該知道這些信息,用戶名和密碼是授權遠程客戶端的用戶名和密碼,授權相關參考這篇https://www.cnblogs.com/yoyoketang/p/10268896.html
連接名: 自己定義,這個無所謂
主機名或ip地址:mysql服務的ip地址
端口:3306 (端口號,默認一般是3306)
用戶名:root (授權遠程登錄的用戶名)
密碼:123456 (授權遠程登錄的密碼)
查詢操作
如果新建了一個test數據庫,里面有一張user表,有name和psw兩個字段,使用sql查詢結果如下
select name,psw from user
接下來使用python轉換成對應的代碼查詢
import pymysql # 打開數據庫連接 db = pymysql.connect(host='47.104.x.x', port=3306, user='root', passwd='123456', db='test') # 使用 cursor() 方法創建一個游標對象cur cur = db.cursor() # 使用 execute() 方法執行 SQL 查詢 cur.execute("select name, psw from user") # 使用 fetchall() 方法獲取查詢結果 data = cur.fetchall() print(data) # 關閉數據庫連接 db.close()
運行結果:
(('yoyo_1', '111111'), ('yoyo', '123456'), ('yoyo_2', '111111'), ('yoyo_3', '222222'), ('yoyo_4', '444444'))
如果想查詢結果以字典格式輸出,可以用db.cursor(cursor=pymysql.cursors.DictCursor)推薦!!!
有時候我們只想查詢某個字段對應的值,比如查詢yoyo_1賬號對應的psw值,並且取出來
select psw from user where name='yoyo_1'
查詢的結果是(('111111',),) 元組嵌套元組,取值的話用下標取出來就可以了
import pymysql def select_db(sql): '''查詢數據庫''' # 打開數據庫連接 db = pymysql.connect(host='47.104.x.x', port=3306, user='root', passwd='123456', db='test') # 使用 cursor() 方法創建一個游標對象cur cur = db.cursor() # 使用 execute() 方法執行 SQL 查詢 cur.execute(sql) # 使用 fetchall() 方法獲取查詢結果 data = cur.fetchall() # print(data) # 取出對應的psw值 # 關閉數據庫連接 db.close() return data if __name__ == "__main__": sql = "select psw from user where name='yoyo_3'" a = select_db(sql)[0][0] print("查詢結果:%s" %str(a)) db.close()
刪除操作
使用python刪除一條數據,比如我要刪除yoyo_1這條記錄
delete from user where name='yoyo_1'
import pymysql def delete_db(sql_delete): '''刪除操作''' # 打開數據庫連接 db = pymysql.connect(host='47.104.x.x', port=3306, user='root', passwd='123456', db='test') # 使用cursor()方法獲取操作游標 cur = db.cursor() try: cur.execute(sql_delete) # 執行 # 提交 db.commit() except Exception as e: print("操作異常:%s" % str(e)) # 錯誤回滾 db.rollback() finally: db.close() if __name__ == '__main__': sql_delete ="delete from user where name='yoyo_1' " delete_db(sql_delete)
更新操作
更新name用戶名是yoyo的用戶,把psw改成666666
update user set psw='666666' where name='yoyo'
import pymysql def update_db(sql_update): '''3.更新操作''' db = pymysql.connect(host='47.104.x.x', port=3306, user='root', passwd='123456', db='test') # 使用cursor()方法獲取操作游標 cur = db.cursor() try: cur.execute(sql_update) # 執行sql # 提交 db.commit() except Exception as e: # 錯誤回滾 print("錯誤信息:%s" % str(e)) db.rollback() finally: db.close() if __name__ == '__main__': sql_update ="update user set psw='666666' where name='yoyo'" update_db(sql_update)
新增數據
往數據庫里面插入一條數據,比如在user表里面新增一個用戶信息yoyo_10,123456
insert into user(id, name, psw) values(10, 'yoyo_10', '123456')
import pymysql def insert_db(sql_insert): '''插入操作''' db = pymysql.connect(host='47.104.x.x', port=3306, user='root', passwd='123456', db='test') # 使用cursor()方法獲取操作游標 cur = db.cursor() try: cur.execute(sql_insert) # 提交 db.commit() except Exception as e: print("錯誤信息:%s" % str(e)) # 錯誤回滾 db.rollback() finally: db.close() if __name__ == "__main__": sql_insert = "insert into user(id, name, psw) values(10, 'yoyo_10', '123456')" insert_db(sql_insert)
從上面的代碼可以看出,除了查詢的代碼不一樣,新增、刪除、更新數據庫操作代碼都一樣,只是執行的sql不一樣