標籤:
==================pymysql===================
由於 MySQLdb 模組還不支援 Python3.x,所以 Python3.x 如果想串連MySQL需要安裝 pymysql 模組。
pymysql 模組可以通過 pip 安裝。但如果你使用的是 pycharm IDE,則可以使用 project python 安裝第三方模組。
[File] >> [settings] >> [Project: python] >> [Project Interpreter] >> [Install按鈕]
由於Python統一了資料庫連接的介面,所以 pymysql 和 MySQLdb 在使用方式上是類似的:
pymysql.Connect()參數說明host(str): MySQL伺服器位址port(int): MySQL伺服器連接埠號碼user(str): 使用者名稱passwd(str): 密碼db(str): 資料庫名稱charset(str): 串連編碼connection對象支援的方法cursor() 使用該串連建立並返回遊標commit() 提交當前事務rollback() 復原當前事務close() 關閉串連cursor對象支援的方法execute(op) 執行一個資料庫的查詢命令fetchone() 取得結果集的下一行fetchmany(size) 擷取結果集的下幾行fetchall() 擷取結果集中的所有行rowcount() 返回資料條數或影響行數close() 關閉遊標對象
==================MySQL===================
首先在串連資料庫之前,先建立一個交易表,方便測試 pymysql 的功能:
-- MySQL dump 10.13 Distrib 5.7.9, for Win64 (x86_64)---- Host: localhost Database: python-- ---------------------------------------------------------- Table structure for table `trade`--DROP TABLE IF EXISTS `trade`;CREATE TABLE `trade` ( `id` int(4) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(6) NOT NULL COMMENT ‘使用者真實姓名‘, `account` varchar(11) NOT NULL COMMENT ‘銀行儲蓄帳號‘, `saving` decimal(8,2) unsigned NOT NULL DEFAULT ‘0.00‘ COMMENT ‘賬戶儲蓄金額‘, `expend` decimal(8,2) unsigned NOT NULL DEFAULT ‘0.00‘ COMMENT ‘賬戶支出總計‘, `income` decimal(8,2) unsigned NOT NULL DEFAULT ‘0.00‘ COMMENT ‘賬戶收入總計‘, PRIMARY KEY (`id`), UNIQUE KEY `name_UNIQUE` (`name`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;---- Dumping data for table `trade`--LOCK TABLES `trade` WRITE;INSERT INTO `trade` VALUES (1,‘喬布斯‘,‘18012345678‘,0.00,0.00,0.00);UNLOCK TABLES;
==================Python===================
使用Python指令碼實現增刪改查和交易處理,源碼如下:
import pymysql.cursors# 串連資料庫connect = pymysql.Connect( host=‘localhost‘, port=3310, user=‘woider‘, passwd=‘3243‘, db=‘python‘, charset=‘utf8‘)# 擷取遊標cursor = connect.cursor()# 插入資料sql = "INSERT INTO trade (name, account, saving) VALUES ( ‘%s‘, ‘%s‘, %.2f )"data = (‘雷軍‘, ‘13512345678‘, 10000)cursor.execute(sql % data)connect.commit()print(‘成功插入‘, cursor.rowcount, ‘條資料‘)# 修改資料sql = "UPDATE trade SET saving = %.2f WHERE account = ‘%s‘ "data = (8888, ‘13512345678‘)cursor.execute(sql % data)connect.commit()print(‘成功修改‘, cursor.rowcount, ‘條資料‘)# 查詢資料sql = "SELECT name,saving FROM trade WHERE account = ‘%s‘ "data = (‘13512345678‘,)cursor.execute(sql % data)for row in cursor.fetchall(): print("Name:%s\tSaving:%.2f" % row)print(‘共尋找出‘, cursor.rowcount, ‘條資料‘)# 刪除資料sql = "DELETE FROM trade WHERE account = ‘%s‘ LIMIT %d"data = (‘13512345678‘, 1)cursor.execute(sql % data)connect.commit()print(‘成功刪除‘, cursor.rowcount, ‘條資料‘)# 交易處理sql_1 = "UPDATE trade SET saving = saving + 1000 WHERE account = ‘18012345678‘ "sql_2 = "UPDATE trade SET expend = expend + 1000 WHERE account = ‘18012345678‘ "sql_3 = "UPDATE trade SET income = income + 2000 WHERE account = ‘18012345678‘ "try: cursor.execute(sql_1) # 儲蓄增加1000 cursor.execute(sql_2) # 支出增加1000 cursor.execute(sql_3) # 收入增加2000except Exception as e: connect.rollback() # 交易回復 print(‘交易處理失敗‘, e)else: connect.commit() # 事務提交 print(‘交易處理成功‘, cursor.rowcount)# 關閉串連cursor.close()connect.close()
==================測試結果===================
==================一些感想===================
我接觸過的指令碼語言主要有三個,JS、PHP、Python。
當中我感覺最智能的是PHP,最方便是JS,最靈活的是Python。
通常我用JS做互動效果,用PHP搭建後台服務,用Python做資料處理。
很多人用Python嘲諷PHP,說Python優雅PHP醜陋。
我並不認為縮排就是優雅,由於Python是為終端設計的,所以代碼相比其他程式設計語言顯得更加簡潔,但這並不代表Python就高效。而C的文法是經得起時間的考驗的,所以PHP的層次相對Python會更清晰,當代碼量越大越能體會到這一點。
經常在技術論壇上看到“PHP是世界上最好的語言”評論,我只能說你的言論只是來源於你的無知。
如果你真覺得PHP是最好的語言,那麼我建議你多去接觸一下其他語言,避免成為井底之蛙。
如果你覺得這是與眾不同的諷刺,那麼我建議你去認真學習一下PHP,你會發現你的諷刺是多麼的滑稽。
本來JS、PHP、Python就是面向不同領域的指令碼語言,他們都是這些領域最傑出的語言,只有他們相互配合才能更好的為專案服務。
與其爭論語言的好壞,不如切身感受它帶來的便利。
Python 3.x 串連資料庫(pymysql 方式)