1.MySQL數據庫的安裝配置和啟動
1.1.下載:
打開MySQL的官網www.mysql.com,發現有一個DOWNLOADS
1.2配置環境變量:
環境變量的配置,和java的配置方式一致,就是把MySQL 的bin路徑 D:\mysql-5.7.20-winx64\bin,放到環境變量中。配置完成后,打開cmd命令窗口,輸入mysql -V, 如果輸出版本號,表示配置成功。
1.3.MySQL配置:
1.打開我們解壓后的文件夾,就是D盤下的mysql-5.7.20-winx64 文件夾,新建一個my.ini文件
2.然后雙擊它,用記事本打開, 輸入如下內容
[client] port=3306 default-character-set=utf8 [mysqld] # 設置為自己MYSQL的安裝目錄 basedir=D:\mysql-5.7.20-winx64 # 設置為MYSQL的數據目錄 datadir=D:\mysql-5.7.20-winx64\data port=3306 character_set_server=utf8 sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER #開啟查詢緩存 explicit_defaults_for_timestamp=true skip-grant-tables
3.在powershell或cmd窗口中,切換到mysql的bin目錄, 完成配置。
首先輸入mysqld --initialize 命令,它表示初始化mysql,生成data文件夾中的文件。如果沒有報錯,就表示初始化完成。
輸入 mysqld -install 命令,安裝MySQL. 如果出現Service successfully installed 說明注冊成功了 因為我的已經注冊好了,所以會出現下圖, 已存在。
現在終於可以啟動服務器了 net start mysql 命令啟動服務器。關閉服務器用net stop mysql
4.MySQL 登錄和退出
這涉及到MySQL 命令的常用參數: -u: u代表username, 表示用戶名; -p: p 代表password, 表示登錄密碼; -h: host-name主機名; -P: port 端口。
所以我們要登錄MySQL,需要提供用戶名,密碼,主機名,端口號信息。語法 mysql [-u username] [-h host] [-p[password]]; 安裝MySQL后,我們會得到初始的用戶名root, 但沒有初始密碼,但輸入密碼怎么辦?我們只需鍵入mysql即可。如果訪問本地服務器的話和使用mysql的默認端口時,-h和-P可以不寫。 現在我們就登錄一下, 在這之前要先啟動mysql服務器。這里還是要以管理員的身份運行powershell
當我們在命令行中輸入mysql -u root -p 后,提示我們輸入密碼,這時輸入mysql, 就可以登錄到mysql 了。
如果某一天MySQL數據庫出現問題重新安裝 click here
2.在python中操作mysql
Python操作MySQL主要使用兩種方式:
- 原生模塊 pymsql
- ORM框架 SQLAchemy(SQLAlchemy是Python編程語言下的一款ORM框架,該框架建立在數據庫API之上,使用關系對象映射進行數據庫操作,簡言之便是:將對象轉換成SQL,然后使用數據API執行SQL並獲取執行結果。)
2.1.pymysql操作mysql
python的標准庫中,是沒有可以直接連接操作mysql的模塊,首先我們應安裝python的第三方模塊pymysql。
使用pymysql操作mysql的步驟:
1)使用pymysql.connect連接並登錄mysql
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db="liuyandb")
首先依次創建Connection對象(數據庫連接對象)用於打開數據庫連接,創建Cursor對象(游標對象)用於執行查詢和獲取結果;然后執行SQL語句對數據庫進行增刪改查等操作並提交事務,此過程如果出現異常則使用回滾技術使數據庫恢復到執行SQL語句之前的狀態;最后,依次銷毀Cursor對象和Connection對象。
以流程圖的方式展示python操作MySQL數據庫的流程:
Connection對象
Connection對象即為數據庫連接對象,在python中可以使用pymysql.connect()方法創建Connection對象,該方法的常用參數如下:
host:連接的數據庫服務器主機名,默認為本地主機(localhost);字符串類型 user:用戶名,默認為當前用戶;字符串類型 passwd:密碼,無默認值;字符串類 db:數據庫名稱,無默認值;字符串類型 port:指定數據庫服務器的連接端口,默認為3306;整型
Connection對象常用的方法如下:
cursor():使用當前連接創建並返回游標 commit():提交當前事務 rollback():回滾當前事務 close():關閉當前連接
2) 使用connection.cursor建立游標
cursor = conn.cursor()
Cursor對象
Cursor對象即為游標對象,用於執行查詢和獲取結果,在python中可以使用conn.cursor()創建,conn為Connection對象。Cursor對象常用的方法和屬性如下:
execute():執行數據庫查詢或命令,將結果從數據庫獲取到客戶端 fetchone():獲取結果集的下一行 fetchmany():獲取結果集的下幾行 fetchall():獲取結果集中剩下的所有行 close():關閉當前游標對象 rowcount:最近一次的execute返回數據的行數或受影響的行數
3) 使用cursor.execute()或cursor.executemany()執行sql語句
cursor.execute(sql)
execute()方法和fetch類方法的工作示原理如下圖所示:
增刪改查函數:
import pymysql conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db="days") cursor = conn.cursor() # SQL語句:向數據表中插入數據 sql = """SELECT * FROM ren WHERE id=1""" def cha(sql): # sql = input("請輸入查詢語句:") # 異常處理 try: # 執行SQL語句 cursor.execute(sql) # 獲取所有的記錄列表 results = cursor.fetchall() # 遍歷列表 for row in results: # 打印列表元素 print(row) except: print('Uable to fetch data!') # 關閉數據庫連接 conn.close() def add(sql): # 異常處理 try: # 執行SQL語句 cursor.execute(sql) # 提交事務到數據庫執行 conn.commit() # 事務是訪問和更新數據庫的一個程序執行單元 except: # 如果發生錯誤則執行回滾操作 conn.rollback() # 關閉數據庫連接 conn.close() def delete(sql): # 異常處理 try: # 執行SQL語句 cursor.execute(sql) # 提交到數據庫執行 conn.commit() except: # 發生錯誤時回滾 conn.rollback() # 關閉數據庫連接 conn.close() def change(sql): # 異常處理 try: # 執行SQL語句 cursor.execute(sql) # 提交到數據庫執行 conn.commit() except: # 發生錯誤時回滾 conn.rollback() # 關閉數據庫連接 conn.close()