⑴ 如何對django 進行sql注入
1 用ORM 如果你發現不能用ORM 那麼有可能是你不知道怎麼用 請把實際情況發上來大家討論
2 你堅信那種情況不能用ORM 且不需討論 那麼這不是一個django的問題 任何接受用戶輸入生成query操作資料庫的程序都需要考慮防注入
相信在其他沒有ORM的地方找答案會更容易!
⑵ django 原始sql怎麼防止sql注入
方案一
總是使用Django自帶的資料庫API。它會根據你所使用的資料庫伺服器(例如PostSQL或者MySQL)的轉換規則,自動轉義特殊的SQL參數。這被運用到了整個Django的資料庫API中,只有一些例外:
傳給 extra() 方法的 where 參數。 (參考 附錄 C。) 這個參數故意設計成可以接受原始的SQL。
使用底層資料庫API的查詢。
⑶ django中怎麼動態操作資料庫欄位
django的ORM系統不支持修改刪除欄位的操作,也就是說你在寫模型model文件的時候,比如說定義了這個user表,然後包含欄位telphone定義,你一旦執行了manage.py syncdb 這個操作,就把表結構往資料庫寫死了,如果你之是刪除了model文件的telphone,資料庫是不被重新修改的。這個時候必須用原生SQL解決,也就是說自己寫SQL語句讓django執行,這樣的話會出很多問題,也就是說你執行了alter table users drop column telphone之後,你的model文件不知道你已經對users表結構做了修改,這樣會出直接導致django應用的崩潰。所以動態欄位不好做。也可能是我才疏學淺,沒太理解,也許有高人能做到。不過面對ORM這樣的盡量別刪除欄位。
⑷ python django 連接sqlserver2005資料庫 經常連接失敗
哦。如果真的存在這樣的問題,可能有幾個方笑雹橋面。
一個是網路環境本身不好。甚至還有網路防火牆。
第二個原因可能是sqlserver2005自身的配置。關於長鏈接的維持,會話失效時間的設置。
第三個原因是所用的驅動程序。我印象中有幾種。我在linux上用了一種很穩定,連接sql server一直沒有發現問題。我是直接驅動的。沒有經過django。
第四,你在django訪問的時候,如果發現連接錯誤,可以要求數據重新連接。這個以前我似乎配置過,幾年不用了。
第五,可碰猛能與你採集的數據有關。你的數據中是否存在數據太大。下載時間過長。以及不合法數據。這些也可能導致django出錯。顯示為連接失敗。估肆舉計是數據錯誤。
⑸ 如何查看在Django模型創建的SQL語句
Django提供了sql,sql_all命令來生成MODEL的SQL語句,當定義好Django Model後,可以在初始化調用Syncdb方法來自動在資料庫裡面生成相應的表。
Model定義如下:
class TestModel(models.Model):
Name=models.CharField(max_length=64,blank=True)
>>> from django.core.management.color import no_style
#Style是用來輸出語句時著色的
>>> from django.db import connection
>>> from django.db.backends import creation
#這裡面有個類BaseDatabaseCreation,就是用來生成SQL語句的。
>>> T=TestModel()
>>> c=creation.BaseDatabaseCreation(connection)
>>>c.sql_create_model(T,no_style())[0]
['CREATE TABLE "abc" (\n "id" integer NOT NULL PRIMARY KEY,\n "Theme" varchar(64) NOT NULL\n)\n;']