1.環(huán)境:
mysql 5.5+
windows服務(wù)器
python3.7
PyMySQL(用來連接mysql數(shù)據(jù)庫)
PyMySQL下載安裝:
pip install PyMySQL
2.步驟:
Python3訪問MySQL 5.7過程和訪問其他的數(shù)據(jù)沒有太大的不同。都經(jīng)歷以下幾個步驟:
1.建立連接
2.建立游標(biāo)cursor
3.調(diào)用cursor的execute方法,以SQL語句和變量為參數(shù),執(zhí)行數(shù)據(jù)庫操作。
4.返回結(jié)果。
5.關(guān)閉游標(biāo),關(guān)閉連接。
3.數(shù)據(jù)庫連接(確保在你的機(jī)子上已經(jīng)安裝了 Python MySQLdb 模塊):
1.創(chuàng)建了數(shù)據(jù)庫 TESTDB
2.在TESTDB數(shù)據(jù)庫中創(chuàng)建表 EMPLOYEE
3.1連接數(shù)據(jù)庫:
import pymysql
# 打開數(shù)據(jù)庫連接db = pymysql.connect("localhost","root","123456","TESTDB" )
# 使用 cursor() 方法創(chuàng)建一個游標(biāo)對象 cursorcursor = db.cursor()
# 使用 execute() 方法執(zhí)行 SQL 查詢 cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法獲取單條數(shù)據(jù).data = cursor.fetchone()
print ("Database version : %s " % data)
# 關(guān)閉數(shù)據(jù)庫連接db.close()執(zhí)行以上腳本輸出結(jié)果如下:
Database version : 5.7.17-log
3.2創(chuàng)建數(shù)據(jù)庫表
如果數(shù)據(jù)庫連接存在我們可以使用execute()方法來為數(shù)據(jù)庫創(chuàng)建表,如下所示創(chuàng)建表EMPLOYEE:
import pymysql
# 打開數(shù)據(jù)庫連接db = pymysql.connect("localhost","root","123456","TESTDB" )
# 使用 cursor() 方法創(chuàng)建一個游標(biāo)對象 cursorcursor = db.cursor()
# 使用 execute() 方法執(zhí)行 SQL,如果表存在則刪除cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 使用預(yù)處理語句創(chuàng)建表sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
cursor.execute(sql)
# 關(guān)閉數(shù)據(jù)庫連接db.close()3.3數(shù)據(jù)庫插入操作
以下實(shí)例使用執(zhí)行 SQL INSERT 語句向表 EMPLOYEE 插入記錄:
import pymysql
# 打開數(shù)據(jù)庫連接db = pymysql.connect("localhost","root","123456","TESTDB" )
# 使用cursor()方法獲取操作游標(biāo) cursor = db.cursor()
# SQL 插入語句sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME)
VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""try: # 執(zhí)行sql語句
cursor.execute(sql) # 提交到數(shù)據(jù)庫執(zhí)行
db.commit()except: # 如果發(fā)生錯誤則回滾
db.rollback()
# 關(guān)閉數(shù)據(jù)庫連接db.close()結(jié)果:

3.4數(shù)據(jù)庫查詢操作
Python查詢Mysql使用 fetchone() 方法獲取單條數(shù)據(jù), 使用fetchall() 方法獲取多條數(shù)據(jù)。
fetchone(): 該方法獲取下一個查詢結(jié)果集。結(jié)果集是一個對象
fetchall(): 接收全部的返回結(jié)果行.
rowcount: 這是一個只讀屬性,并返回執(zhí)行execute()方法后影響的行數(shù)。
查詢EMPLOYEE表中salary(工資)字段大于1000的所有數(shù)據(jù):
# -*- coding: utf-8 -*-"""
Created on Thu Dec 28 19:00:18 2017
@author: JayMo
"""#數(shù)據(jù)庫查詢操作import pymysql
# 打開數(shù)據(jù)庫連接db = pymysql.connect("localhost","root","123456","TESTDB" )
# 使用cursor()方法獲取操作游標(biāo) cursor = db.cursor()
# SQL 查詢語句sql = "SELECT * FROM EMPLOYEE \
WHERE INCOME > '%d'" % (1000)try: # 執(zhí)行SQL語句
cursor.execute(sql) # 獲取所有記錄列表
results = cursor.fetchall() for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4] # 打印結(jié)果
print ("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \
(fname, lname, age, sex, income ))except: print ("Error: unable to fetch data")
# 關(guān)閉數(shù)據(jù)庫連接db.close()3.5數(shù)據(jù)庫更新操作
更新操作用于更新數(shù)據(jù)表的的數(shù)據(jù),以下實(shí)例將 TESTDB表中的 SEX 字段中=‘M’的AGE 字段遞增1:
# -*- coding: utf-8 -*-"""
Created on Thu Dec 28 19:18:48 2017
@author: JayMo
"""import pymysql
# 打開數(shù)據(jù)庫連接db = pymysql.connect("localhost","root","123456","TESTDB" )
# 使用cursor()方法獲取操作游標(biāo) cursor = db.cursor()
# SQL 更新語句sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')try: # 執(zhí)行SQL語句
cursor.execute(sql) # 提交到數(shù)據(jù)庫執(zhí)行
db.commit()
print('success')except: # 發(fā)生錯誤時回滾
db.rollback()
# 關(guān)閉數(shù)據(jù)庫連接db.close()3.6刪除操作
刪除操作用于刪除數(shù)據(jù)表中的數(shù)據(jù),以下實(shí)例演示了刪除數(shù)據(jù)表 EMPLOYEE 中 AGE 大于 20 的所有數(shù)據(jù)
# -*- coding: utf-8 -*-"""
Created on Thu Dec 28 19:21:42 2017
@author: JayMo
"""#刪除import pymysql
# 打開數(shù)據(jù)庫連接db = pymysql.connect("localhost","root","123456","TESTDB" )
# 使用cursor()方法獲取操作游標(biāo) cursor = db.cursor()
# SQL 刪除語句sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)try: # 執(zhí)行SQL語句
cursor.execute(sql) # 提交修改
db.commit()
print('success')except: # 發(fā)生錯誤時回滾
db.rollback()
# 關(guān)閉連接db.close()
3.7執(zhí)行事務(wù)
事務(wù)機(jī)制可以確保數(shù)據(jù)一致性。
事務(wù)應(yīng)該具有4個屬性:原子性、一致性、隔離性、持久性。這四個屬性通常稱為ACID特性。
原子性(atomicity)。一個事務(wù)是一個不可分割的工作單位,事務(wù)中包括的諸操作要么都做,要么都不做。
一致性(consistency)。事務(wù)必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。一致性與原子性是密切相關(guān)的。
隔離性(isolation)。一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對并發(fā)的其他事務(wù)是隔離的,并發(fā)執(zhí)行的各個事務(wù)之間不能互相干擾。
持久性(durability)。持續(xù)性也稱永久性(permanence),指一個事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來的其他操作或故障不應(yīng)該對其有任何影響。
Python DB API 2.0 的事務(wù)提供了兩個方法 commit或 rollback。
# SQL刪除記錄語句sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)try: # 執(zhí)行SQL語句
cursor.execute(sql) # 向數(shù)據(jù)庫提交
db.commit()except: # 發(fā)生錯誤時回滾
db.rollback()
對于支持事務(wù)的數(shù)據(jù)庫, 在Python數(shù)據(jù)庫編程中,當(dāng)游標(biāo)建立之時,就自動開始了一個隱形的數(shù)據(jù)庫事務(wù)。
commit()方法游標(biāo)的所有更新操作,rollback()方法回滾當(dāng)前游標(biāo)的所有操作。每一個方法都開始了一個新的事務(wù)。
4、如何將python執(zhí)行文件py轉(zhuǎn)換為exe文件
準(zhǔn)備好需要轉(zhuǎn)換的py文件和一個圖標(biāo)文件,圖標(biāo)文件的格式為.ico,將他們存放于同一個文件夾中,文件的路徑全部為英文路徑。

利用命令窗口安裝pyinstaller插件

將命令窗口路徑切換到需要處理的py文件的路徑,使用cd命令來完成,可以參照如下圖片

執(zhí)行命令 pyinstaller -F -i 1.ico 2.py

執(zhí)行完命令后,需要的exe文件就在dist文件夾中

5、配置定時任務(wù)
windows系統(tǒng)很容易就能把exe程序添加到定時任務(wù)中,創(chuàng)建一個定時任務(wù),選擇之前制作的exe程序就行了。

本文TAG:web服務(wù)器
猜你喜歡
- 2023-12-03Discuz不顯示在線會員列表以及自定義用戶組圖標(biāo)不顯示問題的解決方法
- 2023-12-02自定義網(wǎng)站字體
- 2021-02-21PHP不緩存到瀏覽器的方法
- 2020-11-23centos8安裝nginx+php+mysql
- 2020-10-31增加vps的swap虛擬內(nèi)存的方法centos
- 2020-10-04centos下discuz論壇郵件服務(wù)sendmail安裝




已有4位網(wǎng)友發(fā)表了看法
杭州KTV 評論于 [2019-08-14 21:02] 回復(fù)
走訪看看,歡迎回訪,多多互動
VPS234 評論于 [2019-09-02 15:05] 回復(fù)
Python雖然很好,但是調(diào)試還是沒有java這種編譯語言方便啊
青未博客 評論于 [2019-09-29 14:54] 回復(fù)
不錯 我看了半小時 受教了
今日新鮮事 評論于 [2019-12-26 00:07] 回復(fù)
文章不錯支持一下吧