CherryPy 是一個用於構建 Web 應用的微框架。它透過簡潔的 API 和強大的功能,使開發者能夠快速建立高效能的 Web 應用。在生物資訊開發中,資料庫搭建和模型部署等場景可能會用到,因此記錄下。
學習資源
-
官方文件:https://docs.cherrypy.dev/en/latest/
-
GitHub專案:https://github.com/cherrypy/cherrypy
核心特點
-
簡潔API:CherryPy的API設計簡潔直觀,讓Web應用開發變得簡單快捷。
-
內建HTTP伺服器:自帶多執行緒伺服器,無需額外配置即可啟動。
-
外掛豐富:提供多樣外掛,輕鬆實現認證、快取、會話管理等功能。
安裝
pip install cherrypy
應用示例
示例一:極簡的Hello World
import cherrypy
class HelloWorld:
@cherrypy.expose
def index(self):
return "Hello, World!"
if __name__ == '__main__':
cherrypy.quickstart(HelloWorld())
示例二:處理表單資料
import cherrypy
class FormHandler:
@cherrypy.expose
def index(self):
return """
<form method="post" action="submit">
Name: <input type="text" name="name">
<input type="submit">
</form>
"""
@cherrypy.expose
def submit(self, name):
return f"Hello, {name}!"
if __name__ == '__main__':
cherrypy.quickstart(FormHandler())
# 使用者可以輸入姓名並點選 "Submit" 按鈕。當使用者提交表單時,CherryPy 將資料傳遞給 process 方法,然後可以使用使用者輸入的資料生成響應。
示例三:RESTful API
import cherrypy
class RestAPI:
@cherrypy.expose
def GET(self, *args, **kwargs):
if not args:
return "Welcome to the API!"
return f"Resource requested: {args[0]}"
if __name__ == '__main__':
cherrypy.quickstart(RestAPI())
# 當使用者訪問 /api 路徑時,它將返回根資源的資訊。當使用者訪問其他路徑時,它將顯示請求的資源名稱。
示例四:資料庫整合
import cherrypy
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
username = Column(String)
engine = create_engine('sqlite:///mydatabase.db')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
class DBExample:
@cherrypy.expose
def index(self):
session = Session()
session.add(User(username='testuser'))
session.commit()
return "New user added!"
if __name__ == '__main__':
cherrypy.quickstart(DBExample())
# 建立了一個 User 類,它對應資料庫中的 users 表。使用 SQLAlchemy 建立了一個 SQLite 資料庫,並將 User 類對映到資料庫表。然後,在 index 方法中向資料庫新增了一個使用者。
總結
CherryPy 是一個極簡、穩定且功能強大的 Web 框架,它透過簡潔的 API 和清晰的結構,提供了一種簡單快速的方法來構建Web應用程式。使用 CherryPy,可以輕鬆地建立高效能的Web應用程式,處理請求和生成響應。
參考:
_https://mp.weixin.qq.com/s/gpd1s5AJD6loYxR6rH5MGA;_https://mp.weixin.qq.com/s/2gc3Z9_fQ9gyku0GcALfFg