-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Expand file tree
/
Copy pathSqlExecution.py
More file actions
37 lines (24 loc) · 1.28 KB
/
Copy pathSqlExecution.py
File metadata and controls
37 lines (24 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from django.db import connection, models
from django.db.models.expressions import RawSQL
def test_plain():
cursor = connection.cursor()
cursor.execute("some sql") # $ getSql="some sql"
def test_context():
with connection.cursor() as cursor:
cursor.execute("some sql") # $ getSql="some sql"
cursor.execute(sql="some sql") # $ getSql="some sql"
class User(models.Model):
pass
def test_model():
User.objects.raw("some sql") # $ getSql="some sql"
User.objects.annotate(RawSQL("some sql")) # $ getSql="some sql"
User.objects.annotate(RawSQL("foo"), RawSQL("bar")) # $ getSql="foo" getSql="bar"
User.objects.annotate(val=RawSQL("some sql")) # $ getSql="some sql"
User.objects.alias(RawSQL("foo"), RawSQL("bar")) # $ getSql="foo" getSql="bar"
User.objects.alias(val=RawSQL("some sql")) # $ getSql="some sql"
User.objects.extra("some sql") # $ getSql="some sql"
User.objects.extra(select="select", where="where", tables="tables", order_by="order_by") # $ getSql="select" getSql="where" getSql="tables" getSql="order_by"
raw = RawSQL("so raw")
User.objects.annotate(val=raw) # $ getSql="so raw"
# chaining QuerySet calls
User.objects.using("db-name").exclude(username="admin").extra("some sql") # $ getSql="some sql"