python mysql实例_Python 操作MySQL详解及实例
使用Python進(jìn)行MySQL的庫主要有三個(gè),Python-MySQL(更熟悉的名字可能是MySQLdb),PyMySQL和SQLAlchemy。
Python-MySQL資格最老,核心由C語言打造,接口精煉,性能最棒,缺點(diǎn)是環(huán)境依賴較多,安裝復(fù)雜,近兩年已停止更新,只支持Python2,不支持Python3。
PyMySQL為替代Python-MySQL而生,純python打造,接口與Python-MySQL兼容,安裝方便,支持Python3。
SQLAlchemy是一個(gè)ORM框架,它并不提供底層的數(shù)據(jù)庫操作,而是要借助于MySQLdb、PyMySQL等第三方庫來完成,目前SQLAlchemy在Web編程領(lǐng)域應(yīng)用廣泛。
本文主要介紹PyMySQL的正確使用方法,示例代碼都是選自實(shí)戰(zhàn)項(xiàng)目。
安裝
簡單的方式:
1
pip install pymysql
如果無法聯(lián)網(wǎng),需要進(jìn)行離線安裝,例如:
1
pip install pymysql-x.x.x.tar.gz
導(dǎo)入
1
import pymysql
連接
1
2
3
4
5
6
7
def connect_wxremit_db():
return pymysql.connect(host='10.123.5.28',
port=3306,
user='root',
password='root1234',
database='db_name',
charset='latin1')
查詢
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def query_country_name(cc2):
sql_str= ("SELECT Fcountry_name_zh"
+ " FROM t_country_code"
+ " WHERE Fcountry_2code='%s'" % (cc2))
logging.info(sql_str)
con= mysql_api.connect_wxremit_db()
cur= con.cursor()
cur.execute(sql_str)
rows= cur.fetchall()
cur.close()
con.close()
assert len(rows)== 1,'Fatal error: country_code does not exists!'
return rows[0][0]
簡單插入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def insert_file_rec(self, file_name, file_md5):
con= mysql_api.connect_wxremit_db()
cur= con.cursor()
try:
sql_str= ("INSERT INTO t_forward_file (Ffile_name, Ffile_md5)",
+ " VALUES ('%s', '%s')" % (file_name, file_md5))
cur.execute(sql_str)
con.commit()
except:
con.rollback()
logging.exception('Insert operation error')
raise
finally:
cur.close()
con.close()
批量插入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
remit_ids= [('1234','CAD'), ('5678','HKD')]
con= mysql_api.connect_wxremit_db()
cur= con.cursor()
try:
cur.executemany("INSERT INTO t_order (Fremit_id, Fcur_type, Fcreate_time"
+ " VALUES (%s, %s, now())", new_items)
assert cur.rowcount== len(remit_ids),'my error message'
con.commit()
except Exception as e:
con.rollback()
logging.exception('Insert operation error')
finally:
cur.close()
con.close()
更新
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def update_refund_trans(self, remit_id):
con= mysql_api.connect_wxremit_db()
cur= con.cursor()
try:
sql_str= ("SELECT Fremit_id"
+ " FROM t_wxrefund_trans"
+ " WHERE Fremit_id='%s'" % remit_id
+ " FOR UPDATE")
logging.info(sql_str)
cur.execute(sql_str)
assert cur.rowcount== 1,'Fatal error: The wx-refund record be deleted!'
sql_str= ("UPDATE t_wxrefund_trans"
+ " SET Fcheck_amount_flag=1"
+ ", Fmodify_time=now()"
+ " WHERE Fremit_id='%s'" % remit_id
logging.info(sql_str)
cur.execute(sql_str)
assert cur.rowcount== 1,'The number of affected rows not equal to 1'
con.commit()
except:
con.rollback()
logging.exception('Update operation error')
raise
finally:
cur.close()
con.close()
PyMySQL已經(jīng)相當(dāng)成熟,和Python-MySQL一樣,它在很多Linux發(fā)行版本中都是可選的安裝組件。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
原文鏈接:https://www.qcloud.com/community/article/687813
總結(jié)
以上是生活随笔為你收集整理的python mysql实例_Python 操作MySQL详解及实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机病毒属于什么类工具,什么是计算机病
- 下一篇: 矩形波如何傅立叶展开_金科文化会不会连续