рд╣рдмреНрд░рд╣рд╛рдм рдкрд░ рдЕрдкрдиреЗ
рдкрд╣рд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдореМрдЬреВрджрд╛ ORM (рдСрдмреНрдЬреЗрдХреНрдЯ-рд░рд┐рд▓реЗрд╢рдирд▓-рдореИрдкрд┐рдВрдЧ, рдСрдмреНрдЬреЗрдХреНрдЯ-рд░рд┐рд▓реЗрд╢рдирд▓ рдореИрдкрд┐рдВрдЧ) - рдЙрдирдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ред рдЕрдЬрдЧрд░, Django рдФрд░ SQLAlchemy рдореЗрдВ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рдкреНрд░рд╕рд┐рджреНрдз рдУрдЖрд░рдПрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕реЗ рджреЛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдХреЗ, рдореИрдВ рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рд╣реВрдВ:
рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдУрдЖрд░рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрд╣реБрдд рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рджрд░реНрд╢рди рд╣рд╛рдирд┐ рд╣реЛрддреА рд╣реИред рдлрд╛рд╕реНрдЯ DBMS рдЗрдВрдЬрди, рдЬреИрд╕реЗ рдХрд┐ MySQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдкреНрд░рджрд░реНрд╢рди 3-5 рдЧреБрдирд╛ рд╕реЗ рдЕрдзрд┐рдХ рдШрдЯ рдЬрд╛рддрд╛ рд╣реИ ред
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, pony рдирд╛рдордХ рдирдП ORM рдЗрдВрдЬрди рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рдореБрдЭрд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ рдФрд░ рдореБрдЭреЗ рдЗрд╕ рдЗрдВрдЬрди рдкрд░ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ред рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдпреЗ рд╡рд┐рдЪрд╛рд░ рд╣рд╛рдмреНрд░рд╛рд╣рдмрд░ рд╕рдореБрджрд╛рдп рдХреЗ рд╣рд┐рдд рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╛рд░рд╛рдВрд╢
рдореИрдВрдиреЗ рдлрд┐рд░ рд╕реЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдП рдФрд░ рдЙрдирдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдкреЛрдиреА рдУрдЖрд░рдПрдо рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдП рдЧрдП рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдХреАред рдХреИрд╢реНрдб рдкреИрд░рд╛рдореАрдЯрд░рдХреГрдд рдЕрдиреБрд░реЛрдз рдХреА рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рд╛ рддрд╛рдХрд┐ рд╣рд░ рдирдП рдЕрдиреБрд░реЛрдз рдХреЛ рдПрдХ рдирдИ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛред
рдкрд░рд┐рдгрд╛рдо: рдЯрдЯреНрдЯреВ ORM рдбреЗрд╕рдВрдЧреЛ рдФрд░ SQLAlchemy рдХреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ 1.5-3 рдмрд╛рд░ рд╕реЗ рджреВрд░ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рднреАред
рдкреЛрдиреА рдмреЗрд╣рддрд░ рдХреНрдпреЛрдВ рдирд┐рдХрд▓реА
рдореБрдЭреЗ рддреБрд░рдВрдд рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: рдореИрдВ рдирд┐рдпрдорд┐рдд рд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд╢рд░реНрддреЛрдВ рдкрд░ django рдФрд░ SQLAlchemy рдХреЗ рд╕рд╛рде pony ORM рд╕реЗ рд▓реИрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реБрдЖ рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ django рдореЗрдВ рдЖрдк рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ SQLAlchemy рдореЗрдВ - рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░рдпреБрдХреНрдд рдХреНрд╡реЗрд░реА (рдХреБрдЫ рдЧреИрд░-рддреБрдЪреНрдЫ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд╕рд╛рде), рддреЛ
рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ ORM
рдХреИрд╢ рдХрд░ рджреЗрддрд╛ рд╣реИ ред рдЯреЗрдХреНрд╕реНрдЯ рдкреЛрдиреА рдУрдЖрд░рдПрдо рдХреЛ рддрд┐рд░рдЫреЗ рддрд░реАрдХреЗ рд╕реЗ рджреЗрдЦрдирд╛: рдХреИрд╢реНрдб
- SQL рдХреНрд╡реЗрд░реА рд╡рд┐рд╢рд┐рд╖реНрдЯ DBMS рдХрд╛ рддреИрдпрд╛рд░ рдкрд╛рда
- рдкрд╛рда рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдЕрдиреБрд░реЛрдз рдХреА рд╕рдВрд░рдЪрдирд╛
- рдкреНрд░рд╕рд╛рд░рдг рд╕рдВрдмрдВрдз
- рдХрдиреЗрдХреНрд╢рди
- рдирд┐рд░реНрдорд┐рдд рд╡рд╕реНрддреБрдУрдВ
- рдкрдврд╝реЗрдВ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рд╡рд╕реНрддреБрдУрдВ
- рдЖрд╕реНрдердЧрд┐рдд рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз
- рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ, рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз
- рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрди
- рд▓реЙрдХ рдЕрдиреБрд░реЛрдз
- рд╕рдВрдмрдВрдзреЛрдВ рдФрд░ рдЙрдирдХреЗ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрди
- рд╢рд╛рдпрдж рдХреБрдЫ рдФрд░ рдореИрдВ рдпрд╛рдж рдХрд┐рдпрд╛
рдЗрд╕ рддрд░рд╣ рдХреА рдХреИрд╢рд┐рдВрдЧ рдЖрдкрдХреЛ рдЙрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рддреЗрдЬрд╝реА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛, рдЬреИрд╕реЗ рдореИрдВ рд╣рддрд╛рд╢рд╛ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛ рдФрд░ рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдпрд╣рд╛рдВ
рд╡рд░реНрдгрд┐рдд рд╣реИред
рдмреЗрд╢рдХ,
рдХреИрд╢рд┐рдВрдЧ рдХрднреА-рдХрднреА рдХреБрдЫ рдЕрд╕реБрд╡рд┐рдзрд╛ рд▓рд╛рддрд╛ рд╣реИ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЕрдкрдиреА рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рд╕реНрдореГрддрд┐ рдореЗрдВ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдХрднреА-рдХрднреА рдбреЗрдЯрд╛ рдХреА рд╕рд╣реА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЯрдЯреНрдЯреВ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ, рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЙрди
рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ
рдЬреЛ рдЖрдкрдХреЛ рдХреЛрдб рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ ред
рдЗрдЪреНрдЫрд╛рдУрдВ
рдореИрдВ рдкреЛрдиреА рдУрдЖрд░рдПрдо рдореЗрдВ рдХреНрдпрд╛ рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореИрдВ рдЕрдиреНрдп рдУрдЖрд░рдПрдо рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреБрд▓рдирд╛ рдХрд░ рд╕рдХреВрдВ?
- рдбреЗрдЯрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди - ORM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд┐рд▓реНрдХреБрд▓ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛
- рдХреБрдЫ рд▓реЛрдХрдкреНрд░рд┐рдп DBMS рдХреЗ рд▓рд┐рдП рдПрдбреЗрдкреНрдЯрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП MS SQL
- рдХреЛрдб рдореЗрдВ DBMS рдХреА рдПрдХ рдХрд┐рд╕реНрдо рд╕реЗ рдкреВрд░реНрдг рдЕрдореВрд░реНрдд
- рд╡рд╕реНрддреБ рдХреЗ рдкреВрд░реНрдг рдореЗрдЯрд╛рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ
- рдХреНрд╖реЗрддреНрд░ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЕрдиреБрдХреВрд▓рди
- рдкреВрд░реНрдг рдкреНрд░рд▓реЗрдЦрди
рдореБрдЭреЗ рдЖрдзреБрдирд┐рдХ рдУрдЖрд░рдПрдо рдореЗрдВ рдХреНрдпрд╛ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкреЛрдиреА рдУрдЖрд░рдПрдо рдореЗрдВ рдореВрд░реНрдд рд░реВрдк рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрднреА рддрдХ рд╕реНрдерд┐рд░ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд╣реАрдВ рдЖрдИ рд╣реИ?
- рдорд┐рд╢реНрд░рд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ (рдлрд╝рд┐рд▓реНрдЯрд░ рдореЗрдВ рдПрдХ рд╕рд╛рде рдлрд╝реАрд▓реНрдб рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддрд░реАрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ)
- рдЕрднрд┐рдХрд▓рди рдХреНрд╖реЗрддреНрд░ рдФрд░ рдЙрди рдкрд░ рд╕реВрдЪрдХрд╛рдВрдХ
- рдорд┐рд╢реНрд░рд┐рдд рдлрд╝реАрд▓реНрдб (рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд)
рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдХреНрд╖реЗрддреНрд░ (рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрдЬрдЧрд░ рд╡рд╕реНрддреБ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреНрд╖реЗрддреНрд░)
- рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛
рдФрд░ рд╣рд╛рдВ, рдореИрдВ рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдордЧреНрд░ рд░реВрдкрд░реЗрдЦрд╛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рднрд╛рд╡реА рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЯрдЯреНрдЯреВ ORM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЕрджреНрдпрддрди 2013-08-03
рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреЛрдиреА ORM рд▓реЗрдЦрдХреЛрдВ рд╕реЗ рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдирд┐рдореНрди рдкрддреЗ рдкрд░ рд╕рдВрдкрд░реНрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: alexander.kozlovsky@gmail.com рдФрд░ m.alexey@gmail.comред рдЖрдордВрддреНрд░рд┐рддреЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдХреНрд╖реБрдзрд╛
рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо
>>> import test_native >>> test_native.test_native() get row by key: native req/seq: 3050.80815908 req time (ms): 0.327782 get value by key: native req/seq: 4956.05711955 req time (ms): 0.2017733
>>> import test_django >>> test_django.test_django() get object by key: django req/seq: 587.58369836 req time (ms): 1.7018852 get value by key: django req/seq: 779.4622303 req time (ms): 1.2829358
>>> import test_alchemy >>> test_alchemy.test_alchemy() get object by key: alchemy req/seq: 317.002465265 req time (ms): 3.1545496 get value by key: alchemy req/seq: 1827.75593609 req time (ms): 0.547119
>>> import test_pony >>> test_pony.test_pony() get object by key: pony req/seq: 1571.18299553 req time (ms): 0.6364631 get value by key: pony req/seq: 2916.85249448 req time (ms): 0.3428353
рдЯреЗрд╕реНрдЯ рдХреЛрдб
test_native.py
import datetime def test_native(): from django.db import connection, transaction cursor = connection.cursor() t1 = datetime.datetime.now() for i in range(10000): cursor.execute("select username,first_name,last_name,email,password,is_staff,is_active,is_superuser,last_login,date_joined from auth_user where id=%s limit 1" % (i+1)) f = cursor.fetchone() u = f[0] t2 = datetime.datetime.now() print "get row by key: native req/seq:",10000/(t2-t1).total_seconds(),'req time (ms):',(t2-t1).total_seconds()/10. t1 = datetime.datetime.now() for i in range(10000): cursor.execute("select username from auth_user where id=%s limit 1" % (i+1)) f = cursor.fetchone() u = f[0][0] t2 = datetime.datetime.now() print "get value by key: native req/seq:",10000/(t2-t1).total_seconds(),'req time (ms):',(t2-t1).total_seconds()/10.
test_django.py
import datetime from django.contrib.auth.models import User def test_django(): t1 = datetime.datetime.now() q = User.objects.all() for i in range(10000): u = q.get(id=i+1) t2 = datetime.datetime.now() print "get object by key: django req/seq:",10000/(t2-t1).total_seconds(),'req time (ms):',(t2-t1).total_seconds()/10. t1 = datetime.datetime.now() q = User.objects.all().values('username') for i in range(10000): u = q.get(id=i+1)['username'] t2 = datetime.datetime.now() print "get value by key: django req/seq:",10000/(t2-t1).total_seconds(),'req time (ms):',(t2-t1).total_seconds()/10.
test_alchemy.py
import datetime from sqlalchemy import * from sqlalchemy.orm.session import Session as ASession from sqlalchemy.ext.declarative import declarative_base query_cache = {} engine = create_engine('mysql://testorm:testorm@127.0.0.1/testorm', execution_options={'compiled_cache':query_cache}) session = ASession(bind=engine) Base = declarative_base(engine) class AUser(Base): __tablename__ = 'auth_user' id = Column(Integer, primary_key=True) username = Column(String(50)) password = Column(String(128)) last_login = Column(DateTime()) first_name = Column(String(30)) last_name = Column(String(30)) email = Column(String(30)) is_staff = Column(Boolean()) is_active = Column(Boolean()) date_joined = Column(DateTime()) def test_alchemy(): t1 = datetime.datetime.now() for i in range(10000): u = session.query(AUser).filter(AUser.id==i+1)[0] t2 = datetime.datetime.now() print "get object by key: alchemy req/seq:",10000/(t2-t1).total_seconds(),'req time (ms):',(t2-t1).total_seconds()/10. table = AUser.__table__ sel = select(['username'],from_obj=table,limit=1,whereclause=table.c.id==bindparam('ident')) t1 = datetime.datetime.now() for i in range(10000): u = sel.execute(ident=i+1).first()['username'] t2 = datetime.datetime.now() print "get value by key: alchemy req/seq:",10000/(t2-t1).total_seconds(),'req time (ms):',(t2-t1).total_seconds()/10.
test_pony.py
import datetime from datetime import date, time from pony import * from pony.orm import * db = Database('mysql', db='testorm', user='testorm', passwd='testorm') class PUser(db.Entity): _table_ = 'auth_user' id = PrimaryKey(int, auto=True) username = Required(str) password = Optional(str) last_login = Required(date) first_name = Optional(str) last_name = Optional(str) email = Optional(str) is_staff = Optional(bool) is_active = Optional(bool) date_joined = Optional(date) db.generate_mapping(create_tables=False) def test_pony(): t1 = datetime.datetime.now() with db_session: for i in range(10000): u = select(u for u in PUser if u.id==i+1)[:1][0] t2 = datetime.datetime.now() print "get object by key: pony req/seq:",10000/(t2-t1).total_seconds(),'req time (ms):',(t2-t1).total_seconds()/10. t1 = datetime.datetime.now() with db_session: for i in range(10000): u = select(u.username for u in PUser if u.id==i+1)[:1][0] t2 = datetime.datetime.now() print "get value by key: pony req/seq:",10000/(t2-t1).total_seconds(),'req time (ms):',(t2-t1).total_seconds()/10.