Mercurial > p > roundup > code
comparison roundup/backends/back_mysql.py @ 2380:1ccfcfeca61b maint-0.7
backport from HEAD
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Sat, 29 May 2004 02:09:13 +0000 |
| parents | c69b67905043 |
| children | fe722c32ce0c |
comparison
equal
deleted
inserted
replaced
| 2373:b48fcae8b2ad | 2380:1ccfcfeca61b |
|---|---|
| 513 start_t = time.time() | 513 start_t = time.time() |
| 514 | 514 |
| 515 cn = self.classname | 515 cn = self.classname |
| 516 | 516 |
| 517 timezone = self.db.getUserTimezone() | 517 timezone = self.db.getUserTimezone() |
| 518 | 518 |
| 519 # vars to hold the components of the SQL statement | |
| 520 frum = ['_'+cn] # FROM clauses | |
| 521 loj = [] # LEFT OUTER JOIN clauses | |
| 522 where = [] # WHERE clauses | |
| 523 args = [] # *any* positional arguments | |
| 524 a = self.db.arg | |
| 525 | |
| 519 # figure the WHERE clause from the filterspec | 526 # figure the WHERE clause from the filterspec |
| 520 props = self.getprops() | 527 props = self.getprops() |
| 521 frum = ['_'+cn] | 528 mlfilt = 0 # are we joining with Multilink tables? |
| 522 where = [] | |
| 523 args = [] | |
| 524 a = self.db.arg | |
| 525 mlfilt = 0 | |
| 526 for k, v in filterspec.items(): | 529 for k, v in filterspec.items(): |
| 527 propclass = props[k] | 530 propclass = props[k] |
| 528 # now do other where clause stuff | 531 # now do other where clause stuff |
| 529 if isinstance(propclass, Multilink): | 532 if isinstance(propclass, Multilink): |
| 530 mlfilt = 1 | 533 mlfilt = 1 |
| 666 ordercols.append(o) | 669 ordercols.append(o) |
| 667 elif isinstance(props[prop], Link): | 670 elif isinstance(props[prop], Link): |
| 668 # determine whether the linked Class has an order property | 671 # determine whether the linked Class has an order property |
| 669 lcn = props[prop].classname | 672 lcn = props[prop].classname |
| 670 link = self.db.classes[lcn] | 673 link = self.db.classes[lcn] |
| 674 o = '_%s._%s'%(cn, prop) | |
| 671 if link.getprops().has_key('order'): | 675 if link.getprops().has_key('order'): |
| 672 tn = '_' + lcn | 676 tn = '_' + lcn |
| 673 frum.append(tn) | 677 loj.append('LEFT OUTER JOIN %s on %s=%s.id'%(tn, |
| 674 where.append('_%s._%s = %s.id'%(cn, prop, tn)) | 678 o, tn)) |
| 675 ordercols.append(tn + '._order') | 679 ordercols.append(tn + '._order') |
| 676 o = tn + '._order' | 680 o = tn + '._order' |
| 681 else: | |
| 682 ordercols.append(o) | |
| 677 elif prop == 'id': | 683 elif prop == 'id': |
| 678 o = '_%s.id'%cn | 684 o = '_%s.id'%cn |
| 679 else: | 685 else: |
| 680 o = '_%s._%s'%(cn, prop) | 686 o = '_%s._%s'%(cn, prop) |
| 681 ordercols.append(o) | 687 ordercols.append(o) |
| 699 cols = cols + ordercols | 705 cols = cols + ordercols |
| 700 order = ' order by %s'%(','.join(orderby)) | 706 order = ' order by %s'%(','.join(orderby)) |
| 701 else: | 707 else: |
| 702 order = '' | 708 order = '' |
| 703 cols = ','.join(cols) | 709 cols = ','.join(cols) |
| 704 sql = 'select %s from %s %s%s'%(cols, frum, where, order) | 710 loj = ' '.join(loj) |
| 711 sql = 'select %s from %s %s %s%s'%(cols, frum, loj, where, order) | |
| 705 args = tuple(args) | 712 args = tuple(args) |
| 706 if __debug__: | 713 if __debug__: |
| 707 print >>hyperdb.DEBUG, 'filter', (self, sql, args) | 714 print >>hyperdb.DEBUG, 'filter', (self, sql, args) |
| 708 self.db.cursor.execute(sql, args) | 715 self.db.cursor.execute(sql, args) |
| 709 l = self.db.cursor.fetchall() | 716 l = self.db.cursor.fetchall() |
