MySQL數據庫在Python中的操作


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()

  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM