Python 3.x 串連資料庫(pymysql 方式)

來源:互聯網
上載者:User

標籤:

==================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 方式)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.