Python程式設計 使用pythink查詢資料庫

2021-09-18 04:25:43 字數 3486 閱讀 8794

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管...