github:
說下這個pythink
模組的作用
背景:我們公司的主要使用的後端語言有兩種,python和php
而且有乙個專門的dba管理資料庫,就是說,這個資料庫不是你乙個人的,有同組的成員和其他組的成員在使用,好像大部分公司都一樣。
python爬蟲部分的業務,主要操作是插入;而php業務主要是查詢
最開始我使用普通的模組pymysql
,這樣每次都要去連線,關閉,很麻煩;
import pymysql
conn = pymysql.connect(
host=
"127.0.0.1"
, port=
3306
, user=
"root"
, passwd=
"123456"
, db=
"test"
)cursor = conn.cursor(
)rows = cursor.execute(
"insert into student(name, age, register_date, gender) values ('xiaoming', 23, '2018-12-30', 'm')"
)cursor.close(
)conn.close(
)
後來使用了peewee
來管理資料庫鏈結,使用model來建立資料庫(這個時候還沒有人管理資料庫),簡直不要太爽,不寫一行sql語句就實現了表建立,和資料操作;
後來我這邊的表太多了,業務發展也規範了,專門有人管理資料庫。這樣就不能使用model直接建表,而是要寫成sql
語句給資料庫管理人員,審核完後再進行建表操作
from peewee import
*# 設定資料庫
db = mysqldatabase(
"mysql:"
)class
basemodel
(model)
:class
meta
: database = db
# 定義資料表
class
user
(basemodel)
: name = charfield(
)user.create(name=
"tom"
)
在這種情況下,如果使用model就必須先寫sql建表
,再把所有字段定義寫出來才可以使用,如果涉及的表字段少還好,有時候涉及100多個字段(真的有過),那光是定義就一上午,model的優勢反而成了累贅,心累;
於是我開始不用model了,直接使用peewee
提供execute_sql
這樣我們又回到了原生sql的時代;
db.execute_sql(
"insert into student(name, age) values ('tom', 24)"
)
一般情況下,會將sql執行的語句和結果封裝到乙個函式中。寫的多了,發現很多重複**,除了sql不一樣以外,其他格式基本一致。於是需要抽象出來,將相同**抽象封裝,以便復用。
於是pythink
出現了,結合了peewee
的操作方式,也保留了一部分原生sql
的格式,比如,增(insert)、刪(delete)、改(update)、查(select)基本保留了sql的關鍵字,不需要額外記憶和區別,而且可以把對錶的操作單獨解除安裝model中,進行統一管理,也可以重寫基類的方法,自己實現自己的業務邏輯(不建議,建議取乙個不一樣的函式名字)。
一起感受下其如絲般順滑的操作
pip install pythink
資料庫demo 中有 乙個表student,對其進行資料查詢
mysql>
use demo;
mysql>
select
*from student limit2;
+----+------+------+------+
| id | name | age | *** |
+----+------+------+------+|1
| tom |24|
1||2
| jack |23|
0|+----+------+------+------+
2rows
inset
(0.00 sec)
# -*- coding: utf-8 -*-
from pythink import thinkmodel
from playhouse.db_url import connect
# 1、使用peewee進行資料庫連線
db = connect(
"mysql:"
)# 2、繼承 thinkmodel 實現自己的類
class
studentthinkmodel
(thinkmodel)
: table_name =
"student"
database = db
# 3、資料插入insert
data =
result = studentthinkmodel.insert(data)
print
(result)
# 1# 4、刪除
result = studentthinkmodel.delete(13)
print
(result)
# 1# 5、修改
data =
result = studentthinkmodel.update(
1, data)
print
(result)
# 1# 6、查詢資料庫中 id=1 的 name 和 age 兩個字段
students = studentthinkmodel.select(fields=
["name"
,"age"
], where=
"id=1"
, limit=1)
for student in students:
print
("name: {}"
.format
(student.name)
)print
("age: {}"
.format
(student.age)
)"""
name: tom
age: 24
"""# 7、記得關閉資料庫連線
db.close(
)
當然還可以進行各種增刪改查,不過還處於測試階段,如果用於正式專案還要注意其執行的結果 Qt混合Python程式設計基本使用
打算用qt做乙個類似手機日曆的windows程式,使用聚合資料的api,返回json格式資料。儘管qt可以處理json資料,還是打算呼叫python。pro檔案新增以下內容 includepath c program files python36 include libs c program fil...
Python程式設計 IPython的基本使用
ipython文件 python 3.0 pip install ipythontab自動完成 顯示資訊 run 執行python指令碼 中斷程式 ctrl c ctrl v,paste,cpaste貼上 快捷鍵 ctrl p 或上箭頭鍵 後向搜尋命令歷史中以當前輸入的文字開頭的命令 ctrl n ...
Python程式設計工具pycharm的使用
簡介 俗話說工欲善其事必先利其器,所以對於程式設計師來說,使用python程式設計必須有乙個強大的python程式設計工具,這款工具就是pycharm。pycharm是一種python ide,帶有一整套可以幫助使用者在使用python語言開發時提高其效率的工具,比如除錯 語法高亮 project管...