рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рдПрдХ SQL рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИред рдХрд╛рд░реНрдп рддреАрди рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ:
- рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб
- рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди
- рд░рд┐рдкреЛрд░реНрдЯ рдкреАрдврд╝реА
рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░реЗрдВ
- рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрд╣реБрдд рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
- рдбреЗрдЯрд╛ рдЕрдирд▓реЛрдбрд┐рдВрдЧ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдШрдЯрд╛рдирд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХреНрд╡реЗрд░реА рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ * рд╕реЗ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ / рджреГрд╢реНрдп рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ 100000 рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддреЗ рд╣реИрдВ, рдХреЙрд▓рдо ~ 100ред
- рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдкрддреНрд░ рдкрдВрдХреНрддрд┐ рдХреА рд╢рд░реНрддреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреА рдПрдХ рдкрд░реАрдХреНрд╖рд╛ рд╣реИред рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЪреЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╛рдо рд╕реЗ рдПрдХ рдХреЙрд▓рдо рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
- рдирд┐рд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рд╕реГрдЬрдиред
рдкреИрд░рд╛рдЧреНрд░рд╛рдл 1 рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ
рдмрд╛рдХреА рдЗрддрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред
(рдореИрдВ
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ sqlite рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ )
рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдУрдЖрд░рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрдо рд╕реЗ рдХрдо рдЕрдЬреАрдм рд╣реИред рд╣рдо рдЗрд╕реЗ рдорд╛рдереЗ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ (рдореЗрдореЛрд░реА рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП,
рдкреВрд░реЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЕрдирд▓реЛрдб рдХрд░реЗрдВ)
import sqlite3 conn = sqlite3.connect(filePath) result = tuple(row for row in conn.cursor().execute("SELECT * FROM test"))
рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж, рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдЯреНрдпреВрдкрд▓реНрд╕ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реЛрддрд╛ рд╣реИред рд╣рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╡рд╛рд▓реА рдПрдХ рд╡рд╕реНрддреБ рдЪрд╛рд╣рд┐рдПред
рдЙрд▓рдЭреА:
ColsCount = 100 class RowWrapper(object): def __init__(self, values): self.Id = values[0] for x in xrange(ColsCount): setattr(self, "Col{0}".format(x), values[x + 1]) result = tuple(RowWrapper(row) for row in conn.cursor().execute(self.query))
рд╣рдо рдЪрд░рдг 2 рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ? рдФрд░ рджреЛрдиреЛрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдЧрддрд┐ рдХреЛ рдорд╛рдкреЗрдВ (рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдХреЛрдб
рдпрд╣рд╛рдВ )ред
100,000 рдкрдВрдХреНрддрд┐рдпреЛрдВ, 101 рдХреЙрд▓рдо
рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реЗрдХрдВрдб рдореЗрдВ рдХрд┐рдпрд╛:
рдирдореВрдирд╛ 1: 4.64823588605
рдирдореВрдирд╛ 2: 17.1091031498
рдХреНрд▓рд╛рд╕ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдмрдирд╛рдиреЗ рдореЗрдВ> 10 рд╕реЗрдХреЗрдВрдб рдХрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ
рдореЗрд░реЗ рдЕрдВрджрд░ C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдПрдХ рдЙрдкрд╛рдп рдерд╛
рд╣рдо рд╕рдВрдЧреНрд░рд╣ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдирд╛рдорд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдпрд╣рд╛рдВ рдЗрд╕рдХреЗ рдХрд╛рдо рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
import collections columns = ('name', 'age', 'story') values = ('john', '99', '...blahblah...') SuperMan = collections.namedtuple('SuperMan', columns) firstSuperMan = SuperMan._make(values) print(firstSuperMan.name) print(firstSuperMan.age) print(firstSuperMan.story)
рдФрд░ рдЕрдм рдПрдХ рдХрд╛рд░реНрдп рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
import collections columns = tuple(itertools.chain(('Id',), tuple("Col{0}".format(x) for x in xrange(ColsCount)))) TupleClass = collections.namedtuple("TupleClass", Columns) result = tuple(TupleClass._make(row) for row in conn.cursor().execute(self.query))
рд╣рдо рдЧрддрд┐ рдХреЛ рдорд╛рдкрддреЗ рд╣реИрдВ:
рдирдореВрдирд╛ 1: 4.30456730876
рдирдореВрдирд╛ реи: резрел.рейрейрезрекрелрезреи7реж
рдирдореВрдирд╛ 3: 4.67008026138
рдЕрд▓рдЧ рдмрд╛рдд рд╣реИред рдЖрдзрд╛рд░ рдмрдирд╛рдиреЗ рдФрд░ рдЧрддрд┐ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ
редрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛