LEFT | RIGHT |
(no file at all) | |
| 1 python-sql |
| 2 ========== |
| 3 |
| 4 python-sql is a library to write SQL queries in a pythonic way. |
| 5 |
| 6 Nutshell |
| 7 -------- |
| 8 |
| 9 Import:: |
| 10 |
| 11 >>> from sql import * |
| 12 >>> from sql.aggregate import * |
| 13 |
| 14 Simple selects:: |
| 15 |
| 16 >>> user = Table('user') |
| 17 >>> select = user.select() |
| 18 >>> tuple(select) |
| 19 ('SELECT "a".* FROM "user" AS "a"', ()) |
| 20 |
| 21 >>> select = user.select(user.name) |
| 22 >>> tuple(select) |
| 23 ('SELECT "a"."name" FROM "user" AS "a"', ()) |
| 24 |
| 25 >>> select = user.select(user.id, user.name) |
| 26 >>> tuple(select) |
| 27 ('SELECT "a"."id", "a"."name" FROM "user" AS "a"', ()) |
| 28 |
| 29 Select with where condition:: |
| 30 |
| 31 >>> select.where = user.name == 'foo' |
| 32 >>> tuple(select) |
| 33 ('SELECT "a"."id", "a"."name" FROM "user" AS "a" WHERE ("a"."name" = %s)', (
'foo',)) |
| 34 |
| 35 >>> select.where = (user.name == 'foo') & (user.active == True) |
| 36 >>> tuple(select) |
| 37 ('SELECT "a"."id", "a"."name" FROM "user" AS "a" WHERE (("a"."name" = %s) AN
D ("a"."active" = %s))', ('foo', True)) |
| 38 |
| 39 Select with join:: |
| 40 |
| 41 >>> join = Join(user, Table('user_group')) |
| 42 >>> join.condition = join.right.user == user.id |
| 43 >>> select = join.select(user.name, join.right.group) |
| 44 >>> tuple(select) |
| 45 ('SELECT "a"."name", "b"."group" FROM "user" AS "a" INNER JOIN "user_group"
AS "b" ON ("b"."user" = "a"."id")', ()) |
| 46 |
| 47 Select with multiple joins:: |
| 48 |
| 49 >>> join1 = Join(user, Table('user')) |
| 50 >>> join2 = Join(join1, Table('user')) |
| 51 >>> select = join2.select(user.id, join1.right.id, join2.right.id) |
| 52 >>> tuple(select) |
| 53 ('SELECT "a"."id", "b"."id", "c"."id" FROM "user" AS "a" INNER JOIN "user" A
S "b" INNER JOIN "user" AS "c"', ()) |
| 54 |
| 55 Select with group_by:: |
| 56 |
| 57 >>> invoice = Table('invoice') |
| 58 >>> select = invoice.select(Sum(invoice.amount), invoice.currency, |
| 59 ... group_by=invoice.currency) |
| 60 >>> tuple(select) |
| 61 ('SELECT SUM("a"."amount"), "a"."currency" FROM "invoice" AS "a" GROUP BY "a
"."currency"', ()) |
| 62 |
| 63 Select with order_by:: |
| 64 |
| 65 >>> tuple(user.select(order_by=user.date)) |
| 66 ('SELECT "a".* FROM "user" AS "a" ORDER BY "a"."date"', ()) |
| 67 >>> tuple(user.select(order_by=Asc(user.date))) |
| 68 ('SELECT "a".* FROM "user" AS "a" ORDER BY "a"."date" ASC', ()) |
| 69 >>> tuple(user.select(order_by=(Asc(user.date), Desc(user.id)))) |
| 70 ('SELECT "a".* FROM "user" AS "a" ORDER BY "a"."date" ASC, "a"."id" DESC', (
)) |
| 71 |
| 72 |
| 73 Select with sub-select:: |
| 74 |
| 75 >>> user_group = Table('user_group') |
| 76 >>> subselect = user_group.select(user_group.user, |
| 77 ... where=(user_group.active == True)) |
| 78 >>> user = Table('user') |
| 79 >>> tuple(user.select(user.id, where=(user.id.in_(subselect)))) |
| 80 ('SELECT "a"."id" FROM "user" AS "a" WHERE ("a"."id" IN (SELECT "a"."user" F
ROM "user_group" AS "a" WHERE ("a"."active" = %s)))', (True,)) |
| 81 |
| 82 Insert query with default values:: |
| 83 |
| 84 >>> tuple(user.insert()) |
| 85 ('INSERT INTO "user" DEFAULT VALUES', ()) |
| 86 |
| 87 Insert query with values:: |
| 88 |
| 89 >>> tuple(user.insert(columns=[user.name, user.login], |
| 90 ... values=['Foo', 'foo'])) |
| 91 ('INSERT INTO "user" ("name", "login") VALUES (%s, %s)', ('Foo', 'foo')) |
| 92 >>> tuple(user.insert(columns=[user.name, user.login], |
| 93 ... values=[['Foo', 'foo'], ['Bar', 'bar']])) |
| 94 ('INSERT INTO "user" ("name", "login") VALUES (%s, %s), (%s, %s)', ('Foo', '
foo', 'Bar', 'bar')) |
| 95 |
| 96 Insert query with query:: |
| 97 |
| 98 >>> passwd = Table('passwd') |
| 99 >>> select = passwd.select(passwd.login, passwd.passwd) |
| 100 >>> tuple(user.insert(values=select)) |
| 101 ('INSERT INTO "user" VALUES (SELECT "a"."login", "a"."passwd" FROM "passwd"
AS "a")', ()) |
| 102 |
| 103 Delete query:: |
| 104 |
| 105 >>> tuple(user.delete()) |
| 106 ('DELETE FROM "user"', ()) |
| 107 |
| 108 Delete query with where condition:: |
| 109 |
| 110 >>> tuple(user.delete(where=(user.name == 'foo'))) |
| 111 ('DELETE FROM "user" WHERE ("name" = %s)', ('foo',)) |
| 112 |
| 113 Delete query with sub-query:: |
| 114 |
| 115 >>> tuple(user.delete(where=( |
| 116 ... user.id.in_(user_group.select(user_group.user))))) |
| 117 ('DELETE FROM "user" WHERE ("id" IN (SELECT "a"."user" FROM "user_group" AS
"a"))', ()) |
LEFT | RIGHT |