python中使用原始生態sql語句

2021-08-13 22:41:43 字數 1753 閱讀 9790

使用原生sql的主要目的是解決一些很複雜的sql不能用orm的方法寫出的問題。

django中幾種寫原生sql的方式

1.extra:結果集修改器,是嗎一種提供額外查詢引數的機制

[python]view plain

copy

>>>> book.objects.filter(publisher__name = '清華大學出版社').extra(where = ['price > 10']) #查詢清華大學

[python]view plain

copy

出版社中所有大於10元的書籍。  

# 也可以使用下面的語句

[python]view plain

copy

>>> book.objects.filter(publisher__name = '清華大學出版社', price__gt = 10) # 意思和上一種相同

[python]view plain

copy

還有其他的幾種方式,不過這個不太常用,所以不多說了。  

2.raw:執行原始sql並返回模型例項

[python]view plain

copy

# 檢視資料表 blog_book 中的所有的物件。

>>> b = book.objects.raw('select * from blog_book') # raw方法返回的是rawqueryset的物件,可迭代

>>> for i in b:  

print(i.title)

[python]view plain

copy

raw方法貌似只能用在查詢的時候  

3.直接執行自定義sql(這種方法完全不依賴與model,前面兩種方式還是要依賴於model)

其實就是用python運算元據庫的方法。

如果sql學的不錯的話,強烈建立使用第三種方式來進行

[python]view plain

copy

from django.db import connection  

# 獲得乙個游標cursor物件

cursor = connection.cursor()  

# 插入操作

cursor.execute("insert into blog_author(name) values('韓寒')")  

# 更新操作

cursor.execute("update blog_author set name = '郭敬明' where name = '韓寒' ")  

# 刪除操作

cursor.execute("delete from blog_author where name = '郭敬明'")  

# 查詢操作

cursor.execute('select * from blog_author')  

# 一條一條的取資料

raw = cursor.fetchone()  

# 取出所有資料,以元組的形式返

cursor.fetchall()  

注意:在django中,如果可以用orm解決的話,首選還是orm,不能解決的時候,再考慮使用原生sql的方式。因為原生sql就是為了彌補orm不能夠很好的執行較為複雜的sql命令。

python使用原始套接字 解析原始ip頭資料

使用底層套接字解碼底層流量,是這次做的重點工作。首先來捕獲第乙個包 1 coding utf 8import socket23 監聽的主機ip 4 host 192.168.1.100 5 6 socket protocol socket.ipproto icmp 78 sniffer socket...

python使用原始套接字 解析原始ip頭資料

使用底層套接字解碼底層流量,是這次做的重點工作。首先來捕獲第乙個包 coding utf 8 import socket 監聽的主機ip host 192.168.1.100 socket protocol socket.ipproto icmp sniffer socket.socket sock...

python使用原始套接字 解析原始ip頭資料

使用底層套接字解碼底層流量,是這次做的重點工作。首先來捕獲第乙個包 coding utf 8 import socket 監聽的主機ip host 192.168.1.100 socket protocol socket.ipproto icmp sniffer socket.socket sock...