Django ORM 使用原生 SQL

2022-08-21 03:51:14 字數 2287 閱讀 7233

raw

# row方法:(摻雜著原生sql和orm來執行的操作)

res = cookbook.objects.raw('select id as nid from epos_cookbook where id>%s', params=[1, ])

print(res.columns) # ['nid']

print(type(res)) # # 在select裡面查詢到的資料orm裡面的要一一對應

res = cookbook.objects.raw("select * from epos_cookbook")

print(res)

for i in res:

print(i.create_date)

print(i)

res = cookbook.objects.raw('select * from epos_cookbook where id>%s', params=[1, ])

# 後面可以加引數進來

print(res)

for i in res:

# print(i.create_date)

print(i)

extra

# (1,2) 必須兩個以上

# res = cookbook.objects.extra(select=, where=['id in (1,2)', ]).values()

res = cookbook.objects.extra(select=, where=['id in (1,2)', ])

print(res) #

for r in res:

print(r)

connections (最原生)

from django.db import connection, connections

# 需要配置資料庫

# cursor=connection['default'].cursor()

cursor = connection.cursor()

# 不傳引數的情況

cursor.execute("""select * from epos_cookbook""")

# 為原生sql語句設定引數的情況

# cursor.execute("""select * from epos_cookbook where id=%s""",[2,]) # 2 是 id

# cursor.execute("""select * from api_userinfo where id=%s"""%1)

# 防止注入攻擊

cursor.execute("select * from epos_cookbook where id=%s", params=[1, ])

# row=cursor.fetchone()

# row=cursor.fetchmany()

row = cursor.fetchall() ##拿到全部的資料

print(row)

from django.db import connection

cursor=connection.cursor()

# 插入操作

cursor.execute("insert into hello_author(name) values('錢鍾書')")

# 更新操作

cursor.execute("update hello_author set name='abc' where name='bcd'")

# 刪除操作

cursor.execute("delete from hello_author where name='abc'")

# 查詢操作

cursor.execute("select * from hello_author")

raw=cursor.fetchone() # 返回結果行游標直讀向前,讀取一條

cursor.fetchall() # 讀取所有

from django.db import connection, connections

# cursor = connection.cursor()

cursor = connections['db2'].cursor()

row = cursor.fetchall()

print(row)

```

django 鏈結多個資料庫 並使用原生sql

settings檔案如下 databases db1 查詢django的文件 from django.db import connection def my custom sql self with connection.cursor as cursor cursor.execute update ...

django 鏈結多個資料庫 並使用原生sql

通常在專案中我們需要連線多個資料庫,用來執行原生的sql 配置檔案settings.py databases db1 查詢django的文件 from django.db import connection def my custom sql self with connection.cursor ...

Django ORM使用記錄 一

orm簡介 orm中的model 在django中model是你資料的單 一 明確的資訊 它包含了你儲存的資料的重要欄位和行為。通常,乙個模型 model 對映到乙個資料庫表 每個模型都是乙個python類,它是django.db.models.model的子類。模型的每個屬性都代表乙個資料庫字段 ...