python基础教程目录,从入门到上手的
文章目錄
- 一、Python入門、環境搭建、變量、數據類型
- 二、Python運算符、條件結構、循環結構
- 三、Python函數
- 四、做一次綜合練習,做一個控制臺的員工管理
- 五、面向對象(封裝、繼承、多態)
- 六、模塊、包、文件、異常、高階函數
- 七、Python標準庫之字符串處理庫、文件及目錄操作、時間日期
- 八、Python數據庫編程
因為清晰易讀的風格,廣泛的適用性,Python已經成為最受歡迎的編程語言之一。在TIOBE 排行榜中位居第四,是名副其實的人工智能第一語言。
風靡的另一個原因是,Python有非常多的第三方庫。比如用于WEB開發的Django/Flask,用于科學計算的 Numpy/Scipy,用于機器學習的 Scikit-Learn,用于運維的 Supervisor/Fabric,用于網絡爬蟲的 BeautifulSoup/Scrapy……這些你都可以輕松調用實現,不用再造輪子。
一、Python入門、環境搭建、變量、數據類型
Python的簡介
Python 是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。
Python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。
Python 是一種解釋型語言: 這意味著開發過程中沒有了編譯這個環節。類似于PHP和Perl語言。
Python 是交互式語言: 這意味著,您可以在一個 Python 提示符 >>> 后直接執行代碼。
Python 是面向對象語言: 這意味著Python支持面向對象的風格或代碼封裝在對象的編程技術
Python 是初學者的語言:Python 對初級程序員而言,是一種偉大的語言,它支持廣泛的應用程序開發,從簡單的文字處理到 WWW 瀏覽器再到游戲。
Python的特點
1.易于學習:Python有相對較少的關鍵字,結構簡單,和一個明確定義的語法,學習起來更加簡單
2.易于閱讀:Python代碼定義的更清晰。
3.易于維護:Python的成功在于它的源代碼是相當容易維護的。
4.一個廣泛的標準庫:Python的最大的優勢之一是豐富的庫,跨平臺的,在UNIX,Windows和Macintosh兼容很好。
5.互動模式:互動模式的支持,您可以從終端輸入執行代碼并獲得結果的語言,互動的測試和調試代碼片斷。
6.可移植:基于其開放源代碼的特性,Python已經被移植(也就是使其工作)到許多平臺。
7.可擴展:如果你需要一段運行很快的關鍵代碼,或者是想要編寫一些不愿開放的算法,你可以使用C或C++完成那部分程序,然后從你的Python程序中調用。
8.數據庫:Python提供所有主要的商業數據庫的接口。
9.GUI編程:Python支持GUI可以創建和移植到許多系統調用。
10.可嵌入: 你可以將Python嵌入到C/C++程序,讓你的程序的用戶獲得"腳本化"的能力。
環境搭建
Python的環境搭建其實是跟我們java的環境搭建是一樣的,java需要下載jdk,我們Python同樣需要下載“jdk”跟jdk是一樣的不過它不叫jdk,就叫Python,小編這里安裝的是3.7.4版本的
變量
這里跟java的區別就是沒有了類型
變量名:必須是大小寫英文、數字和_組成,且不能用數字開頭
規范:變量名 = 變量值
比如:
#字符串既可以是單引號也可以是雙引號
name = ‘Snail’
age = 22
數據類型
數據類型,我們來跟java做一個對比。我們java有8個,Python也是8個。但是我們的Python有一些事跟java不一樣的,比如:list列表,tuple元組,dict字典,和set集合。在java中也有set集合這個Python其實是跟它一樣的。字典其實跟java的Map也差不多
Python數據類型:
數值:int float 字符串:str 布爾類型:bool 列表list tuple元組:類似Java中的數組 集合set 字典dict:類似java中的Maplist列表
List運算
注意:list方法使用規則:列表名 . 方法()比如:name.append(“元素”)
tuple元組
set集合
Set集合就和Java中的Set集合是一樣的概念,存放的數據是無序的,并且不能添加重復的元素
set方法
dict字典(Map)
Dictionary字典,就類似java中的Map集合,以“鍵值對”的形式存放數據,key不能重復
語法格式:
字典名={key1:value1,key2:value2} 獲取值:
①.語法:字典名[“key”],比如:person[“name”],如果key不存在則會報錯 ②.語法:字典名.get(“key”),比如
person.get(“name”),如果key不存在,不會報錯,可以設置第二個參數為默認值 修改:
語法:字典名[key]=value,如果key存在則修改,如果不存在則創建一個新的key和value eg:
person[“name”]=“張三豐” 刪除: 語法:del 字典名[key] eg: del person[“name”]
dictionary方法
代碼測試:
總結:推薦python學習解答學習扣扣群:數字778數字747數字511。歡迎有想法學習的python的伙伴加入,評論,每天有免費的直播課,
二、Python運算符、條件結構、循環結構
一、Python變量類型
類型
數值型、字符串、元組、列表、字典等
例:c/c++、java是強類型的編程語言,一個變量在使用前確定類型,在程序期間,變量的類型是不能改變的;
腳本語言:shell、python、perl、javaScript弱類型;
Python支持三種不同的數字類型
#有符號整數 int #浮點實數值 float #例 #16進制---0X 0x #8進制---0o 0O #2進制---0b 0B #二進制:bin() 八進制:oct() 十六進制:hex() #復數 complex #注意:復數由一對有序組成, #通過 x + yj 來表示實浮點數, #其中 x 和 y 是實數并且 j 是虛數單位在Python3所有整數表示為長整型。因此,沒有單獨為long的整數類型。
#例 c1=bin(8) print(c1)#0b1000 c2=oct(8) print(c2)#0o10 c3=hex(8) print(c3)#0x10字符串
#字符串變量 s="abc" s='abc'將多個變量分配給不同的變量
x,y=6,8 print(x,y)二、python支持運算
2.1算術運算符
2.2 比較(關系)運算符
x=8==8 print(x)#True y=False print(y)2.3 賦值運算符
x=3 x+=5 print(x) #//= 地板除 x//=3 print(x) y=5.2789 y=y//2.954#返回1.0 print(y)2.4 邏輯運算符
#and or not #input函數得到用戶輸入數據 year=int(input("請輸入年份")) #通過int()函數將參數轉換成整數 print(int(3.14)) if(year%400==0 or (year%4==0 and year%100!=0)):print("是一個閏年...") #例如:#if條件表達式或數值if(not 0):print("abc")print("over")2.5位運算符
# > & | ^ ! ~ << >>2.6 運算符成員
in ,not in
某元素是否在序列中,其中字符串就是序列
2.7 標識運算符
is如果操作符兩側是相同的對象,計算結果為true,否則結果為 false
is not 如果操作符兩側的變量是相同的對象,計算結果為false,否則 true
三、python流程控制結構
3.1 python 條件結構
3.2循環
3.2.1 while循環
3.2.2 break,continue while…else
# else表示當while條件不成立,執行else部分#例:i=1 while(i<4):print(i)i+=1if(i==3):breakelse:print("循環結束...")print("ok")print("over...")結果:12over...3.2.3 for…in循環
for 迭代變量 in 集合:語句... [else:語句...] #注意:#和for循環配合使用range函數range(stop) range(start, stop[, step]) for i in range(10,100,20):print(i) #練習 for..in循環實現斐波那契數列 1,1,2,3,5,8...one=1two=2for month in range(3,14):three=one+twoprint(three)#數值輾轉one=twotwo=three #函數def fn(n):if(n<=1):return n;else:return (f(n-1)+f(n-2))for i in range(20):print(f(i)) #例:i=1while(i<11):i = i + 1if(i%2!=0):continueprint(i) #例:九九乘法表i=1while(i<10):j=9while(j>=1):#輸出格式s="%d*%d=%d"%(i,j,i*j)print(s,sep="\t",end="\t")j-=1print()i=i+1 # for 循環 for i in range(1,10):for j in range(1,i+1):s="%d*%d=%2d"%(i,j,i*j)print(s,sep="\t",end="\t")print()三、Python函數
函數是組織好的,可重復使用的,用來實現單一,或相關聯功能的代碼段。
函數能提高應用的模塊性,和代碼的重復利用率。你已經知道Python提供了許多內建函數,比如print()。但你也可以自己創建函數,這被叫做用戶自定義函數。
定義一個函數
你可以定義一個由自己想要功能的函數,以下是簡單的規則:
函數代碼塊以 def 關鍵詞開頭,后接函數標識符名稱和圓括號()。
任何傳入參數和自變量必須放在圓括號中間。圓括號之間可以用于定義參數。
函數的第一行語句可以選擇性地使用文檔字符串—用于存放函數說明。
函數內容以冒號起始,并且縮進。
return [表達式] 結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當于返回 None。
語法
后續學習,詳細點擊Python函數
四、做一次綜合練習,做一個控制臺的員工管理
直接上代碼
""" 需求:員工管理系統 功能: 1.添加員工信息 2.刪除員工信息 3.修改員工信息 4.查看單個員工信息 5.查看所有員工信息 6.退出技術:函數、數據類型(字典列表)、循環、條件語句 """ emps = [] # [{},{}]def chocieFunc():"""選擇功能列表"""print("*" * 30)print("1.添加員工信息")print("2.刪除員工信息")print("3.修改員工信息")print("4.查看單個員工信息")print("5.查看所有員工信息")print("6.退出")print("*" * 30)def addEmp():"""添加員工信息"""id = input("請輸入要添加的員工編號:")name = input("請輸入要添加的員工姓名:")gender = input("請輸入要添加的員工性別:")age = input("請輸入要添加的員工年齡:")emp = {"id": id, "name": name, "gender": gender, "age": age}emps.append(emp)print("添加OK!")def delEmp():"""刪除員工信息"""id = input("請輸入要刪除的員工編號:")for emp in emps:if emp.get("id") == id:# 將emp刪除,從empsemps.remove(emp)print("刪除OK!")breakelse:print("請輸入正確的員工編號")def updateEmp():"""修改員工信息"""id = input("請輸入要修改的員工編號:")for emp in emps:if emp["id"] == id:# 特別注意emp["name"] = input("請輸入要修改后的員工姓名:")emp["gender"] = input("請輸入要修改后的員工性別:")emp["age"] = input("請輸入要修改后的員工年齡:")# emp = {"id": id, "name": name, "gender": gender, "age": age}# 先刪除原有的emp,在追加新的emp【不推薦】print("修改成功!!!")breakelse:print("查無此人!!!")def getEmpById():"""查看單個員工信息"""id = input("請輸入要查詢的員工編號:")for emp in emps:if emp["id"] == id:print("編號\t姓名\t性別\t年齡")print(f"{emp['id']}\t{emp['name']}\t{emp['gender']}\t{emp['age']}")breakelse:print("查無此人!!!")def getAllEmps():"""查看所有員工信息"""print("編號\t姓名\t性別\t年齡")for emp in emps:print(f"{emp['id']}\t{emp['name']}\t{emp['gender']}\t{emp['age']}")else:print(f"共查詢到{len(emps)}條數據")print("******歡迎使用員工管理系統******") while True:chocieFunc()num = int(input("請輸入指令:"))if num == 1:addEmp()elif num == 2:delEmp()elif num == 3:updateEmp()elif num == 4:getEmpById()elif num == 5:getAllEmps()elif num == 6:print("歡迎下次再來!!!")breakelse:print("請輸入正確的指令")五、面向對象(封裝、繼承、多態)
封裝是指隱藏類的實現細節,方便其他人的調用。
封裝的目的:
讓使用者可以通過間接調用方法或屬性操作對象。
所以Python使用封裝時,必會使用私有屬性和方法。
私有屬性和方法:
以‘__’雙下劃線開頭,不以雙下滑線結尾的表示符為私有成員,
私有成員只能使用該類的方法,來進行訪問和修改
1. 以__開頭的屬性為私有屬性 如__vol
2. 以__開頭的方法為私有方法 如__vol()
注:python封裝是假的封裝(模擬的封裝)
比如通過dir查看屬性就可以發現,其實私有屬性被變成了_class__xx,所以才無法訪問
多態 polymocphic
字面意思:‘多種狀態’
多態是指在有繼承/派生關系的類中,調用基類對象的方法,實際能調用子類的覆蓋方法的現象叫多態
狀態:
靜態(編譯時狀態)
動態(運行時狀態)
說明:
1,多態調用的方法與對象相關,不與類型相關
2,Python全部對象都只有“運行時狀態(動態)”
沒有C++語言里的編譯時狀態(靜態)
繼承 inheritance
繼承是從已有的類中派生出新的類,新類具有原類的數據屬性和行為,并
能拓展新的行為
繼承的目的:
延續舊類的功能
單繼承
語法:
class 類名(基類名):
語句塊
說明:
單繼承是指派生類由一個基類衍生出來的新類
多繼承 multiple inheritance
多繼承是指一個子類繼承自兩個或兩個以上的基類
語法:
class 類名(基類名1,基類名2,…)
說明:
一個子類同時繼承自多個父親,父類的方法可以同時被繼承下來
如果兩個父親中有同名的方法,而在子類中又沒有覆蓋此方法時,調用
結果難以確定
多繼承的問題(缺陷)
標識符沖突問題
(一般不推薦使用多繼承)
六、模塊、包、文件、異常、高階函數
模塊
ython 模塊(Module),是一個 Python 文件,以 .py 結尾,包含了 Python 對象定義和Python語句。
模塊讓你能夠有邏輯地組織你的 Python 代碼段。
把相關的代碼分配到一個模塊里能讓你的代碼更好用,更易懂。
模塊能定義函數,類和變量,模塊里也能包含可執行的代碼。
“”"
包
1、什么是包?
官網解釋
Packages are a way of structuring Python’s module namespace by using “dotted module names”
包是一種通過使用‘.模塊名’來組織python模塊名稱空間的方式。
具體的:包就是一個包含有__init__.py文件的文件夾,所以其實我們創建包的目的就是為了用文件夾將文件/模塊組織起來
需要強調的是:
在python3中,即使包下沒有__init__.py文件,import 包仍然不會報錯,而在python2中,包下一定要有該文件,否則import 包報錯
創建包的目的不是為了運行,而是被導入使用,記住,包只是模塊的一種形式而已,包的本質就是一種模塊
2、為何要使用包
包的本質就是一個文件夾,那么文件夾唯一的功能就是將文件組織起來 隨著功能越寫越多,我們無法將所以功能都放到一個文件中,于是我們使用模塊去組織功能,而隨著模塊越來越多,我們就需要用文件夾將模塊文件組織起來,以此來提高程序的結構性和可維護性
3、注意事項
1.關于包相關的導入語句也分為import和from … import …兩種,但是無論哪種,無論在什么位置,在導入時都必須遵循一個原則:凡是在導入時帶點的,點的左邊都必須是一個包,否則非法。可以帶有一連串的點,如item.subitem.subsubitem,但都必須遵循這個原則。但對于導入后,在使用時就沒有這種限制了,點的左邊可以是包,模塊,函數,類(它們都可以用點的方式調用自己的屬性)。
2、import導入文件時,產生名稱空間中的名字來源于文件,import 包,產生的名稱空間的名字同樣來源于文件,即包下的__init__.py,導入包本質就是在導入該文件
3、包A和包B下有同名模塊也不會沖突,如A.a與B.a來自倆個命名空間
文件
""" 文件 a:追加 append 沒有文件的時候會報錯 r:讀取 read 沒有文件的時候會報錯 w:寫 writer 在文件沒有的時候自動創建 """f = open("readme.txt", "r", encoding="UTF-8") # f.write("好好學習,天天向上")# 讀文件 # content = f.read(2) # content = f.readline() content = f.readlines() print(content[1])# 復制 try:f = open("C:/test.py", "r")content = f.read()print(content)a = open("D:/test.py", "w")a.write(content + "這個成功了")a = open("D:/test.py", "r")read = a.read()print(read)except Exception:print("不好意思了,失敗了呢") else:print("好棒,成功了") ———————————
異常
什么是異常
異常是一個事件,該會在程序執行過程中發生,影響了程序正常執行。一般情況下,在Python無法正常處理程序時就會發生一異常。異常是Python對象,表示一個錯誤。當Python腳本發生異常時我們需要捕獲處理它,否則程序會終止執行。
常見異常類型
異常名稱 描述
FileNotFoundError 找不到指定文件的異常
NameError 未聲明/初始化對象(沒有屬性)
BaseExcption 所有異常的基類
異常處理語句
try…except
try…except…finally
raise
高階函數
什么是高階函數?
高階函數:一個函數可以作為參數傳給另外一個函數,或者一個函數的返回值為另外一個函數(若返回值為該函數本身,則為遞歸),滿足其一則為高階函數。
總結:Python.模塊、包、文件、異常、高階函數學習介紹到這里了,給邀請喜歡學習的伙伴加入python解答學習扣扣群;778數字747數字511 ,一起學習,一起進步
七、Python標準庫之字符串處理庫、文件及目錄操作、時間日期
1.文件及目錄操作
os 模塊提供了非常豐富的方法用來處理文件和目錄。常用的方法如下表所示:具體操作點擊“文件及目錄操作”
2.字符串處理庫
字符串是 Python 中最常用的數據類型。我們可以使用引號('或")來創建字符串。
創建字符串很簡單,只要為變量分配一個值即可。例如:
Python 訪問字符串中的值
Python 不支持單字符類型,單字符在 Python 中也是作為一個字符串使用。
Python 訪問子字符串,可以使用方括號來截取字符串,如下實例
實例(Python 2.0+)
以上實例執行結果:
var1[0]: H var2[1:5]: ythoPython 字符串連接
我們可以對字符串進行截取并與其他字符串進行連接,如下實例:
實例(Python 2.0+)
print "輸出 :
- ", var1[:6] + ‘Runoob!’
Python 轉義字符
在需要在字符中使用特殊字符時,python 用反斜杠 \ 轉義字符 ,想需要學習點擊:繼續學習完整讀完這一節
八、Python數據庫編程
數據庫的基本操作
創建數據庫:
CREATE DATABASE test;
GRANT ALL ON test.* to user(s);
第一行創建了一個名為“test”的數據庫,假設你是數據庫的管理員,第二行語句可以為指定用戶(或所有用戶)提升權限
使用數據庫
USE test;
如果你已經登錄一個數據庫系統,但是還沒有選擇你希望使用的數據庫,這條簡單的語句可以讓你指定一個數據庫,用來執行數據庫操作。
刪除數據庫
DROP DATABASE test;
這條簡單的語句可以從數據庫中移除所有表和數據,并將其從系統中刪除。
創建表
CREATE TABLE users (login VARCHAR(8), userid INT, projid INT);
這條語句創建一個新表,其中包含字符串列login,以及兩個整型列:userid和projid。
刪除表
DROP TABLE users;
這條簡單的語句可以刪除數據庫中的一個表,并清空其中的所有數據。
插入行
INSERT INTO users VALUES(‘leanna’,2111,1);
可以使用INSERT語句向數據庫中插入一個新行。需要指定表名以及其中每列的值。對于本例而言,字符串“leanna”對應于login參數,而2111和1分別對應于userid和projid。
更新行
UPDATE users SET projid=4 WHERE projid=2;
UPDATE users SET projid=1 WHERE userid=311;
為了修改表中已存在的行,需要使用UPDATE語句。使用SET來確定要修改的列,并提供條件來確定修改的行。在第一個例子中,所有“projid”為2的用戶需要改為4。而在第二個例子中,將指定用戶(這里是userid為311的用戶)移到編號為#1的項目組中。
刪除行
DELETE FROM users WHERE projid=%d;
DELETE FROM users;
為了刪除表中的行,需要使用DELETE FROM 命令,指定準備刪除的行的表名以及可選的條件。如果沒有這個條件,就會像第二個例子樣,把所有行都刪除了。
以上就是數據庫的一些基本的操作,從上我們可以看出:
創建數據庫(create)和刪除數據庫(drop),創建表和刪除表也一樣。
修改表中已存在的行叫做更新(update)和往數據庫里添加新行叫做插入(insert)
而移出表中已存在的行叫做刪除(delete)。
這些動作通常稱為數據庫命令或操作。使用可選的條件請求數據庫中的行稱為詢查(query)。
函數屬性&對象方法
connect()函數屬性 user 用戶名 password 密碼 host 主機名 database 數據庫名 MySQLdb數據庫使用的是db dsn 數據源名 connect()函數通過 Connection 對象訪問數據庫。兼容模塊必須實現 connect()函數,該函數創建并返回一個 Connection 對象。應用與數據庫之間進行通信需要建立數據庫連接。它是最基本的機制,只有通過數據庫連接才能把命令傳遞到服務器,并得到返回的結果。當一個連接(或一個連接池)建立后,可以創建一個游標,向數據庫發送請求,然后從數據庫中接收回應。
Connection 對象方法
Connection 對象不需要包含任何數據屬性
當使用 close()時,這個連接將不能再使用,否則會進入到異常處理中。
如果數據庫不支持事務處理,或啟用了自動提交功能,commit()方法都將無法使用。如果你愿意,可以實現單獨的方法用來啟動或關閉自動提交功能。
處理的數據庫而言,只需要在方法中實現“pass”即可。
和 commit()相似,rollback()方法也只有在支持事務處理的數據庫中才有用。發生異常之后,rollback()會將數據庫的狀態恢復到事務處理開始時。
如果 RDBMS 不支持游標,那么 cursor()仍然會返回一個盡可能模仿真實游標的對象。這是最基本的要求。每個適配器開發者都可以為他的接口或數據庫專門添加特殊屬性。
當你完成數據庫連接并關閉游標時,需要對所有操作執行 commit(),并對你的連接執行close()。
Cursor 對象
arraysize 使用fetchmany方法時,一次取出的結果行數,默認為1 connection 創建此游標的鏈接(可選) description 返回游標活動狀態(7選項元組):(name,type_code,display_size,internal_size,precision,scale,null_ok) lastrowid 上次修改的行ID(可選:如果不支持行ID,則返回None) rowcount 上次execute*()方法處理或影響的行數 callproc(func[,args]) 調用儲存過程 close() 關閉游標 execute(op[,args]) 執行數據庫查詢或命令 executemany(op,args) 類似execute()和map()的結合,為給定的所有參數準備執行的數據庫查詢或命令 fetchone() 獲取查詢結果的下一行 fetchmany([size=cursor.arraysize]) 獲取查詢結果的下面size行 fetchall() 獲取查詢結果的所有(剩余)行 __iter__() 為游標創建迭代器對象(可選,參考next()) messages 游標執行后從數據庫中獲取的消息列表(元組結合,可選) next() 被迭代器用于獲取查詢結果的下一行(可選,類似fetchone(),參考__iter__()) nextset() 移動到下一個結果集合(如果支持) rownumber 當前結果集中游標的索引(以行為單位,從0開始,可選) setinputsizes(sizes) 設置允許的最大輸入大小(必須有,但是實現是可選的) setoutputsize(size[,col]) 設置大列獲取的最大緩沖區大小(必須有,但是實現是可選的)當建立連接后,就可以和數據庫進行通信了。游標可以讓用戶提交數據庫命令,并獲得查詢的結果行。
當游標創建好后,就可以執行查詢或命令(或多個查詢和命令),并從結果集中取回一行或多行結果。
游標對象最重要的屬性是 execute*()和 fetch*()方法,所有針對數據庫的服務請求都是通過它們執行的。arraysize 數據屬性在為 fetchmany()設置默認大小時非常有用。當然,在不需要時關閉游標是個好主意,而如果你的數據庫支持存儲過程,可能會用到callproc()。
類對象和構造函數
連接數據庫
以MySQL為例:
打開cmd輸入:pip3 install mysqlclient 安裝mysql驅動
ORM技術(sqlalchemy)
在Python中,最有名的ORM框架是SQLAlchemy
安裝SQLAlchemy
pip3 install sqlalchemy # 導入模塊 from sqlalchemy import Column, String, create_engine, INT from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base# 創建對象的基類: Base = declarative_base()# 定義User對象 class User(Base):__tablename__ = "users"# 表的結構id = Column(INT, primary_key=True)name = Column(String(20))# 初始化數據庫連接 # create_engine()用來初始化數據庫連接。SQLAlchemy用一個字符串表示連接信息 engine = create_engine("mysql://root:root@127.0.0.1:3306/test") # 創建DBSession類型 DBSession = sessionmaker(bind=engine)向數據庫表中添加一行記錄。
由于有了ORM,我們向數據庫表中添加一行記錄,可以視為添加一個User對象:
關鍵是獲取session,然后把對象添加到session,最后提交并關閉。DBSession對象可視為當前數據庫連接。
查詢記錄:
# 創建session對象 session = DBSession() # 創建Query查詢,filter是where條件,最后調用one()返回唯一行,如果條用all()則返回所有行: result = session.query(User).filter(User.name == 'smelond').one() print("type:", type(result)) print("name:", result.name) session.close()結果: type: <class '__main__.User'> name: smelond從上面我們可以看出“還是ORM比較好用”。
文章就學到了,大家慢慢消化了,有什么都不懂了,可以加下python解答學習群:數字778數字747數字511
總結
以上是生活随笔為你收集整理的python基础教程目录,从入门到上手的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux ls按着文件数字大小排列
- 下一篇: 蓝桥杯java打印菱形_Python基础