上次有同窗問到,Python的持久化怎麼處理。此次就帶你們來體驗一下,Python訪問數據庫。python
如今的數據庫分類不少,以mysql爲例。須要到mysql的官網上去下載mysql。 Mysql下載路徑mysql
下載打開安裝包,勾選常見的安裝位置等配置之後,設置數據庫用戶名密碼,啓動mysql就能夠了。 mac上的啓動能夠沿着如下路徑開啓: 系統偏好設置------Mysql------開啓。如圖所示: sql
Python3的數據庫模塊能夠是pymysql。安裝能夠經過pip安裝: mongodb
建立數據庫能夠下載圖形客戶端(mysql workbench或者navicat等等),也能夠經過Python代碼。 這裏咱們使用Python代碼來處理:數據庫
建數據庫,庫名爲awesome;建表,表名blogs;共有三列,列名 id,user_id, namefetch
import pymysql
# 建庫和建表
con = pymysql.connect(host='localhost', user='root',
passwd='123456', charset='utf8')
cur = con.cursor()
# 開始建庫
cur.execute("create database awesome character set utf8;")
# 使用庫
cur.execute("use awesome;")
# 建表
cur.execute("create table blogs(id char(20),user_id char(20),name char(20),)character set utf8;")
複製代碼
查詢表,表名blogsspa
# 1.創建鏈接,用戶root 密碼mysql123456 dbname:awesome
db = pymysql.connect("localhost","root","mysql123456","awesome")
# 獲取遊標
cur = db.cursor()
# sql查詢語句 表名blogs
sql = "select * from blogs"
try:
cur.execute(sql) # 執行sql語句
results = cur.fetchall() # 獲取查詢的全部記錄
print("id", "user_id", "name")
# 遍歷結果
for row in results:
id = row[0]
user_id = row[1]
name = row[4]
print(id, name, user_id)
except Exception as e:
raise e
finally:
db.close() # 關閉鏈接
複製代碼
往表blog裏插入一行數據(id,user_id,name) = ("test_id",'test_user_id','test_name')code
# 2.插入操做
db = pymysql.connect("localhost","root","mysql12345","awesome")
cur_insert = db.cursor()
# sql插入語句 表名blogs
sql_insert ="""insert into blogs(id,user_id,name) values ("test_id",'test_user_id','test_name')"""
try:
cur_insert.execute(sql_insert)
# 提交
db.commit()
print('開始數據庫插入操做')
except Exception as e:
db.rollback()
print('數據庫插入操做錯誤回滾')
finally:
db.close()
複製代碼
更新user_id = "test_user_id" 的行,將其 name 更新爲 "update_test_name"cdn
# 3.更新操做
db = pymysql.connect("localhost","root","mysql12345","awesome")
cur_update = db.cursor()
sql_update = "update awesome.blogs set name = '%s' where user_id = '%s'"
try:
cur_update.execute(sql_update % ("update_test_name", "test_user_id"))
# 提交
db.commit()
print('開始數據庫更新操做')
except Exception as e:
db.rollback()
print('數據庫更新操做錯誤回滾')
finally:
db.close()
複製代碼
刪除 name = "update_test_name" 的行blog
# 4.刪除操做
db = pymysql.connect("localhost","root","mysql12345","awesome")
cur_delete = db.cursor()
sql_delete = "delete from awesome.blogs where name = '%s'"
try:
cur_delete.execute(sql_delete % ("update_test_name")) # 像sql語句傳遞參數
# 提交
db.commit()
print('開始數據庫刪除操做')
except Exception as e:
db.rollback()
print('數據庫刪除操做錯誤回滾')
finally:
db.close()
複製代碼
這裏以mysql爲例,若是使用mongodb等其餘數據庫,使用方法也是相似的,你們能夠觸類旁通。