django中能用orm的就用它orm吧,不建議執行原生sql,可能會有一些安全問題,
如果實在是sql太複雜orm實現不了,那就看看下邊執行原生sql的方法,跟直接使用pymysql基本一致了
from django.db import connection
with connection.cursor() as cursor
cursor.excute('select * from accounts_user')
row = cursor.fetchall()
return row
with connection.cursor() as cursor:
cursor.execute("select * from publisher")
#得到表的屬性列表
columns = [col[0] for col in cursor.description]
#zip函式將連個元組進行整合,在用dict函式將其變成字典
res = [dict(zip(columns, row)) for row in cursor.fetchall()]
print(res)
raw:執行原始sql並返回模型例項
1.使用extra:查詢人民郵電出版社出版並且**大於50元的書籍
book.objects.filter(publisher__name=『人民郵電出版社』).extra(where=[『price>50』])
2.使用raw
books=book.objects.raw('select * from hello_book')
for book in books:
print book
3.自定義sql
from django.db import connection
cursor = connection.cursor()
cursor.execute("insert into hello_author(name) values ('郭敬明')")
cursor.execute("update hello_author set name='韓寒' where name='郭敬明'")
cursor.execute("delete from hello_author where name='韓寒'")
cursor.execute("select * from hello_author")
cursor.fetchone()
cursor.fetchall()
原生js實現繼承的三種方式
function parent name,age function child name,age,gender const ming newchild ming 18 男 console.log ming 2 原型鏈繼承 優點 實現了原型物件內的函式復用.缺點 雖然得到了屬性值,但無法在例項物件內靈...
C 中三種new的用法
string ps new string abc 上面這個new表示式完成了兩件事情 申請記憶體和初始化物件。new操作符類似於c語 言中的malloc,只是負責申請記憶體,例如 void buffer operator new sizeof string 注 意這裡多了乙個operator。這是n...
css水平垂直居中三種實現方法
方法一 使用dispaly inline block 和 vertical align 還有偽類實現 block1 block1 before center1 方法二 使用相對定位或者固定定位和transform來實現。ie8及以下不支援 block2 center2 方法三 使用display t...