日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python学习笔记:Day4 编写Model

發布時間:2025/3/15 python 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python学习笔记:Day4 编写Model 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

最近在學習深度學習,已經跑出了幾個模型,但Pyhton的基礎不夠扎實,因此,開始補習Python了,大家都推薦廖雪峰的課程,因此,開始了學習,但光學有沒有用,還要和大家討論一下,因此,寫下這些帖子,廖雪峰的課程連接在這里:廖雪峰
Python的相關介紹,以及它的歷史故事和運行機制,可以參見這篇:python介紹
Python的安裝可以參見這篇:Python安裝
Python的運行模式以及輸入輸出可以參見這篇:Python IO
Python的基礎概念介紹,可以參見這篇:Python 基礎
Python字符串和編碼的介紹,可以參見這篇:Python字符串與編碼
Python基本數據結構:list和tuple介紹,可以參見這篇:Python list和tuple
Python控制語句介紹:ifelse,可以參見這篇:Python 條件判斷
Python控制語句介紹:循環實現,可以參見這篇:Python循環語句
Python數據結構:dict和set介紹Python數據結構dict和set
Python函數相關:Python函數
Python高階特性:Python高級特性
Python高階函數:Python高階函數
Python匿名函數:Python匿名函數
Python裝飾器:Python裝飾器
Python偏函數:Python偏函數
Python模塊:Python模塊
Python面向對象編程(1):Python面向對象
Python面向對象編程(2):Python面向對象(2)
Python面向對象編程(3):Python面向對象(3)
Python面向對象編程(4):Pyhton面向對象(4)
Python面向對象高級編程(上):Python面向對象高級編程(上)
Python面向對象高級編程(中上):Python面向對象高級編程(中上)
Python面向對象高級編程(中下):Python面向對象高級編程(中下)
Python面向對象高級編程(完):Python面向對象高級編程(完)
Python錯誤調試(起):Python調試:起
Python錯誤調試(承):Python調試:承
Python錯誤調試(轉):Python調試:轉
Python錯誤調試(合):python調試:合
Python文件IO編程:Python文件IO
Python文件IO編程2:Python文件IO2
Python文件IO編程3:PYthon文件IO3
Python進程和線程(起):Python進程和線程起
Python進程和線程(承):Python進程和線程承
Python進程和線程(轉):Python進程和線程轉
Python進程和線程(合):Python進程和線程合
Python正則表達式:Python正則表達式
Python學習筆記:常用內建模塊1:Python學習筆記:常用內建模塊1
Python學習筆記:常用內建模塊2:Python學習筆記:常用內建模塊2
Python學習筆記:常用內建模塊3:Python學習筆記:常用內建模塊3
Python學習筆記:常用內建模塊4:Python學習筆記: 常用內建模塊4
Python學習筆記:常用內建模塊5:Python學習筆記: 常用內建模塊5
Python學習筆記:常用內建模塊6:Python學習筆記:常用內建模塊6
Python學習筆記:第三方模塊1:Python常用第三方模塊
Python學習筆記:第三方模塊2:Python常用第三方模塊
Python學習筆記:第三方模塊3:Python常用第三方模塊
Pytho學習筆記:網絡編程:Python網絡編程
Python學習筆記:電子郵件:Python電子郵件1
Python學習筆記:SMTP服務器:PythonSMTP服務器
Python學習筆記:POP3服務器:PythonPOP3服務器
Python學習筆記:Python數據庫 Python數據庫1
Python學習筆記:Python數據庫2Python數據庫2
Python學習筆記:web開發1Python學習筆記:web開發1
Python學習筆記:web開發2Python學習筆記: web開發2
Python學習筆記: web開發3Python學習筆記: web開發3
Python學習筆記:異步IO(1)Python學習筆記:異步IO(1)
Python學習筆記:異步IO(2)Python學習筆記:異步IO(2)
Python學習筆記:異步IO(3)Python學習筆記:異步IO(3)
Python學習筆記:Day 1-2開發Python學習筆記:Day1-2開發
Python學習筆記:Day 3 ORMPython學習筆記:Day3 ORM

目錄

  • 前言
  • 目錄
  • 編寫Model
    • 初始化數據庫表
    • 編寫數據訪問代碼

編寫Model

有了ORM,我們就可以把Web App需要的3個表用Model表示出來:

import time, uuidfrom orm import Model, StringField, BooleanField, FloatField, TextFielddef next_id():return '%015d%s000' % (int(time.time() * 1000), uuid.uuid4().hex)class User(Model):__table__ = 'users'id = StringField(primary_key=True, default=next_id, ddl='varchar(50)')email = StringField(ddl='varchar(50)')passwd = StringField(ddl='varchar(50)')admin = BooleanField()name = StringField(ddl='varchar(50)')image = StringField(ddl='varchar(500)')created_at = FloatField(default=time.time)class Blog(Model):__table__ = 'blogs'id = StringField(primary_key=True, default=next_id, ddl='varchar(50)')user_id = StringField(ddl='varchar(50)')user_name = StringField(ddl='varchar(50)')user_image = StringField(ddl='varchar(500)')name = StringField(ddl='varchar(50)')summary = StringField(ddl='varchar(200)')content = TextField()created_at = FloatField(default=time.time)class Comment(Model):__table__ = 'comments'id = StringField(primary_key=True, default=next_id, ddl='varchar(50)')blog_id = StringField(ddl='varchar(50)')user_id = StringField(ddl='varchar(50)')user_name = StringField(ddl='varchar(50)')user_image = StringField(ddl='varchar(500)')content = TextField()created_at = FloatField(default=time.time)

在編寫ORM時,給一個Field增加一個default參數可以讓ORM自己填入缺省值,非常方便。并且,缺省值可以作為函數對象傳入,在調用save()時自動計算。

例如,主鍵id的缺省值是函數next_id,創建時間created_at的缺省值是函數time.time,可以自動設置當前日期和時間。

日期和時間用float類型存儲在數據庫中,而不是datetime類型,這么做的好處是不必關心數據庫的時區以及時區轉換問題,排序非常簡單,顯示的時候,只需要做一個float到str的轉換,也非常容易。

初始化數據庫表

如果表的數量很少,可以手寫創建表的SQL腳本:

-- schema.sqldrop database if exists awesome;create database awesome;use awesome;grant select, insert, update, delete on awesome.* to 'www-data'@'localhost' identified by 'www-data';create table users (`id` varchar(50) not null,`email` varchar(50) not null,`passwd` varchar(50) not null,`admin` bool not null,`name` varchar(50) not null,`image` varchar(500) not null,`created_at` real not null,unique key `idx_email` (`email`),key `idx_created_at` (`created_at`),primary key (`id`) ) engine=innodb default charset=utf8;create table blogs (`id` varchar(50) not null,`user_id` varchar(50) not null,`user_name` varchar(50) not null,`user_image` varchar(500) not null,`name` varchar(50) not null,`summary` varchar(200) not null,`content` mediumtext not null,`created_at` real not null,key `idx_created_at` (`created_at`),primary key (`id`) ) engine=innodb default charset=utf8;create table comments (`id` varchar(50) not null,`blog_id` varchar(50) not null,`user_id` varchar(50) not null,`user_name` varchar(50) not null,`user_image` varchar(500) not null,`content` mediumtext not null,`created_at` real not null,key `idx_created_at` (`created_at`),primary key (`id`) ) engine=innodb default charset=utf8;

如果表的數量很多,可以從Model對象直接通過腳本自動生成SQL腳本,使用更簡單。

把SQL腳本放到MySQL命令行里執行:

$ mysql -u root -p < schema.sql

我們就完成了數據庫表的初始化。

編寫數據訪問代碼

接下來,就可以真正開始編寫代碼操作對象了。比如,對于User對象,我們就可以做如下操作:

import orm from models import User, Blog, Commentdef test():yield from orm.create_pool(user='www-data', password='www-data', database='awesome')u = User(name='Test', email='test@example.com', passwd='1234567890', image='about:blank')yield from u.save()for x in test():pass

可以在MySQL客戶端命令行查詢,看看數據是不是正常存儲到MySQL里面了。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Python学习笔记:Day4 编写Model的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。