我用 Python 作些什麼?

我主要工做是後端,因此這一點我就不說了。本文主要說下我用 Python 作的其它的一些事。python

1 數據導出支撐

一個月可能有一兩次須要導出一些數據,每次的需求都有些不一樣。剛開始的時候還好,用數據庫的一些鏈接工具,好比 Sequel Pro 和 DataGrip 等,直接導出就能知足要求。後面呢,有些字段須要自定義又或者是要連表,用那些工具不大方便,因而就只能本身寫腳本了。網上找了找,看到 Kenneth Reitz 大牛寫的一個 records 庫,用起來超級爽。mysql

執行 SQL 簡單粗暴sql

import records

db = records.Database('mysql+pymysql://'
                      'username:password@host:port'
                      '/database?charset=utf8')
rows = db.query('select * from books') 
複製代碼

讀出的結果使用也比較方便,迭代時使用字典或對象的方式能夠直接獲取相應值,相比一些類庫須要本身轉換方便得多數據庫

for r in rows:
    print(r['name'], r['price'])
    # 或者
    # print(r.name, r.price)
複製代碼

導出格式支持也比較豐富,有 CSV、YAML、xls 等。好比要導出 xls 文件後端

with open('books.xls', 'wb') as f:
    f.write(rows.export('xls'))
複製代碼

固然,因爲這個庫使用起來簡單、靈活,除了導出以外,還作了一些其它的事。好比,某個表某些數據有異常,要找出是哪幾條,純寫 SQL 太麻煩的時候,使用這個庫也能解決問題。bash

平時作一些支撐性工做的時候,經過這個庫仍是省了很多時間。服務器

2 簡單的代碼自動生成

開發時咱們常常發現某些代碼結構特別相似,本身一行一行的敲感受太浪費時間,這個時候咱們應該考慮用腳原本處理。微信

好比,新增一條數據時,若是用的是 SQLAlchemy 的話,可能會碰到相似的語句session

def create(book):
	new_book = Book()
	new_book.name = book.get('name', '')
	new_book.price = book.get('price', 0)
	# ...
	db.session.add(new_book)
	db.session.flush()
複製代碼

若是當表的字段特別多的時候,本身一行一行的敲完太痛苦。因此,咱們能夠寫個腳本自動生成一下多線程

# coding=utf-8

import records

db = records.Database('mysql+pymysql://'
                      'username:password@host:port'
                      '/database?charset=utf8')

books = db.query('select * from books limit 1')
columns = list(books.as_dict()[0].keys())

for column in columns:
    print(f"new_book.{column} ="
          f" book.get('{column}', '')")
複製代碼

執行後獲得下面的代碼

new_book.id = book.get('id', '')
new_book.cat_id = book.get('cat_id', '')
new_book.name = book.get('name', '')
new_book.price = book.get('price', '')
複製代碼

將上面的複製到須要的地方,而後把 get() 的默認值本身根據類型手動調下,就搞定了。

固然,若是在字段很少的狀況下,這樣作反而更浪費時間了。本身根據須要選擇就好。

這裏,只是舉個例子,工做中碰到重複性的任務多的時候,不妨考慮寫個腳本。剛開始可能費點時間,後面但是效率的大大提高。

3 消息推送

某些時候,我可能會關注些什麼東西,想在合適的時候提醒我下。好比,我同時關注了好幾個電商平臺上的同一款手機,我但願在這幾個平臺的最低價低於多少的時候提醒我下,我就會寫個腳本去解決。

思路很簡單,寫個簡單的爬蟲每隔一段時間獲取一下這幾個平臺的這款手機的價格,取最小值,當最小值低於指望值的時候,就告訴我,能夠發微信、短信或推送消息到 APP 等。使用微信比較繁瑣,使用短信的話免費的又不靠譜,因此我喜歡推送消息到 APP。最後,將腳本放到服務器上一直跑着。

這裏,我推薦個網站 IFTTT(https://ifttt.com),正如其名字(IF This Then That)那樣,推送工具其實就是在這個網站上新建一個應用 ( Applet )並定義好事件( Event )與消息,當相應事件發生時推送消息給手機上的 App,固然這個 App 是網站提供的,目前安卓、IOS 都支持。具體怎麼使用,能夠看下這篇文章 https://realpython.com/python-bitcoin-ifttt 的這個小節 Sending a Test IFTTT Notification

4 其它

Python 能解決不少平常的小問題,上面只是部分。不一樣方向、不一樣興趣的開發者,弄出的小玩意也不盡相同。好比,以前看《東京喰種》的漫畫,在網頁上看加載太慢了,一怒,寫個腳本開下多線程一分鐘不到幾百話全下好了,在本地流暢的看。以前在 GitHub 上也看到一個下載羞羞視頻的庫,都不用本身去找資源了,不過很差意思,庫的名字搞忘了。總之,瞭解一下 Python,即便你不是作相關開發的,它也能幫你解決很多問題。

本文首發於公衆號「小小後端」。

相關文章
相關標籤/搜索