親們,久等了,終于有時間講一下Python3操作MySQL數(shù)據(jù)庫了,真可謂“千呼萬喚始出來,猶抱琵琶半遮面”。 1不用我多說,應該都知道,Python連接數(shù)據(jù)庫的前提是:MySQL已經(jīng)安裝并啟動了。沒安裝的,先去MySQL官網(wǎng)下載安裝包。官網(wǎng)上64位的只有壓縮包,那就下載mysql-8.0.15-winx64.zip并進行解壓縮。在mysql-8.0.15-winx64目錄下新建my.ini文件,內(nèi)容如下: [mysqld] # 設(shè)置3306端口 port=3306 # 自定義設(shè)置mysql的安裝目錄,即解壓mysql壓縮包的目錄 basedir=D:\\software\\mysql-8.0.15-winx64 # 自定義設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)存放目錄 datadir=D:\\software\\mysql-8.0.15-winx64\\Data # 允許最大連接數(shù) max_connections=200 # 允許連接失敗的次數(shù),這是為了防止有人從該主機試圖攻擊數(shù)據(jù)庫系統(tǒng) max_connect_errors=10 # 服務(wù)端使用的字符集默認為UTF8 character-set-server=utf8 # 創(chuàng)建新表時將使用的默認存儲引擎 default-storage-engine=INNODB # 默認使用“mysql_native_password”插件認證 default_authentication_plugin=mysql_native_password [mysql] # 設(shè)置mysql客戶端默認字符集 default-character-set=utf8 [client] # 設(shè)置mysql客戶端連接服務(wù)端時默認使用的端口和默認字符集 port=3306 default-character-set=utf8 2為了方便在【終端】執(zhí)行相關(guān)命令,需要配置環(huán)境變量。每個環(huán)境變量之間用分號;隔開。Windows 7右鍵【計算機】-【屬性】-【高級系統(tǒng)設(shè)置】-【環(huán)境變量】-【PATH】輸入MySQL路徑:D:\software\mysql-8.0.15-winx64\bin 。 以管理員的身份打開cmd窗口。用d:或D:切換到D盤路徑,并cd D:\software\mysql-8.0.15-winx64\bin,運行:mysqld --initialize –console初始化數(shù)據(jù)庫,記下生成的初始化密碼:11Si>l#s*y,k 。運行mysqld --install ,把MySQL安裝成服務(wù),并通過net start mysql啟動MySQL的服務(wù)。 3默認的密碼太復雜了,我們把它改成:psd12345。以管理員身份打開cmd窗口。運行:mysql -uroot -p接著輸入密碼進行確認。 # 顯示數(shù)據(jù)庫,記得后面加分號; show databases; # 選擇mysql數(shù)據(jù)庫,記得后面加分號; use mysql; # 更改密碼,記得后面加分號; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'psd12345'; 下載Navicat綠色版軟件,連接MySQL數(shù)據(jù)庫。 新建數(shù)據(jù)庫pytest,新建表students, 字段id(int,自動增長),name(varchar(255)) ,隨便輸入一些內(nèi)容。我輸入了西門吹水、小李飛劍。 4Python要連接數(shù)據(jù)庫,得有驅(qū)動,咱現(xiàn)在就來安裝PyMySQL 驅(qū)動。以管理員身份打開命令行窗口,運行:pip3 install PyMySQL 。 用PyCharm或Eclipse等開發(fā)工具編寫Python代碼。 import pymysql conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='psd12345', db='pytest') cur = conn.cursor() cur.execute('select * from students') for students in cur.fetchall(): print('學生:', students[1]) cur.close() conn.close() |
|