python-連接數據庫

前提條件是本機已安裝了mysql,mysql安裝流程請查看:mysq安裝

mysql-connector 驅動安裝

使用pip3命令來安裝mysql-connector(由於本機存在多版本python,故要指定pip版本)
在windos命令窗口執行如下命令:

python3 -m pip3 install mysql-connector
#python3 -m pip install mysql-connector

提示:pip3orpip模塊不存在在這裏插入圖片描述
在這裏插入圖片描述
找不到pip3,沒找到pip3模塊
直接到python3.5安裝路徑下找,發現是有pip、pip3、pip3.5,但是訪問時報錯。
D:\Software\Python35\Scripts
在這裏插入圖片描述
在window命令窗口執行如下命令,重新生成pip3

python3 -m ensurepip

在這裏插入圖片描述
重新查看D:\Software\Python35\Scripts,pip3及pip3.5均已更新
在這裏插入圖片描述
重新在windows命令窗口執行:

#python3 -m pip3 install mysql-connector
python3 -m pip install mysql-connector

用pip3執行依舊不成功,只能換成pip執行。
在這裏插入圖片描述
在Pycharm中的TestDb項目中嘗試引入模塊

import mysql.connector

運行代碼後居然還是報錯,提示沒有mysql.connector這個模塊。
後來重新設置了TestDb項目的Project Interpreter爲python3.5
在這裏插入圖片描述
運行代碼結果:Process finished with exit code 0 證明代碼運行正常。

1、連接數據庫

#-*- coding:utf-8 -*-
import mysql.connector
mydb = mysql.connector.connect(
    host='127.0.0.1',         # 數據庫主機地址
    user='****',              # 數據庫用戶名
    passwd='*****'         # 數據庫密碼
)
print(mydb)

執行結果,已正常連接。

D:\Software\Python35\python3.exe D:/Software/python/PycharmProjects/TestDb/connectDB.py
<mysql.connector.connection.MySQLConnection object at 0x00000000011767F0>

Process finished with exit code 0

創建數據庫
在原來代碼的基礎上追加如下代碼:

mycursor = mydb.cursor()
mycursor.execute('CREATE DATABASE enterprise_db_test')

執行結果:成功

Process finished with exit code 0

查看是否創建數據庫成功,可以show數據庫,展示數據庫列表

#-*- coding:utf-8 -*-

import mysql.connector

mydb = mysql.connector.connect(
    host='127.0.0.1',         # 數據庫主機地址
    user='*****',              # 數據庫用戶名
    passwd='*****'         # 數據庫密碼
)

mycursor = mydb.cursor()

#mycursor.execute('CREATE DATABASE enterprise_db_test')
mycursor.execute('show databases')

for x in  mycursor:
    print(x)

輸出結果:

D:\Software\Python35\python3.exe D:/Software/python/PycharmProjects/TestDb/connectDB.py
('information_schema',)
('enterprise_db_test',)
('guest',)
('mysql',)
('performance_schema',)
('run00b',)
('school',)
('sys',)

Process finished with exit code 0

直接連接已創建的數據庫

#-*- coding:utf-8 -*-

import mysql.connector

mydb = mysql.connector.connect(
    host='127.0.0.1',         # 數據庫主機地址
    user='****',              # 數據庫用戶名
    passwd='*****',          # 數據庫密碼
    database='enterprise_db_test'   # 連接已有數據庫,如果不存在則報錯
)

2、執行sql文件

#-*- coding:utf-8 -*-
__author__ = 'grit'
__time__ = '2019-11-28'

import mysql.connector
import os


def get_sql_files():
    sql_files = []
    # listdir()返回指定路徑下的文件和文件夾列表  os.path.dirname(path):去掉文件名,返回目錄
    # os.path.abspath(__file__):獲取腳本完整路徑

    files = os.listdir(os.path.dirname(os.path.abspath(__file__)))
    for file in files:
        if os.path.splitext(file)[1] == '.sql':
            sql_files.append(file)
    return sql_files


def connectMydb():
    print('開始連接數據庫')
    #打開數據庫
    mydb = mysql.connector.connect(
        host='****',         # 數據庫主機地址
        user='****',              # 數據庫用戶名
        passwd='****',          # 數據庫密碼
        database='enterprise_db_test',   # 連接已有數據庫,如果不存在則報錯
        autocommit=True
     )
    # 使用cursor()方法創建一個遊標對象 cursor
    cursor = mydb.cursor()

    for file in get_sql_files():
        executeScriptsFromFile(file, cursor)
    mydb.close()


def executeScriptsFromFile(filename,cursor):
    fd = open(filename, 'r', encoding='utf-8')
    sqlFile = fd.read()
    fd.close()
    sqlCommands = sqlFile.split(';')

    for command in sqlCommands:
        try:
            cursor.execute(command)
            # cursor.connection.commit()  # 執行commit操作,插入語句才能生效
        except Exception as msg:
            print(msg)
    print('sql執行完成')


if __name__ == "__main__":
    connectMydb()





發佈了20 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章