Django рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рддреЗрдЬреА

Django рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкреНрд░рд╢реНрди рдХреЛ Habr├й рд╕рд╣рд┐рдд рд╡рд┐рднрд┐рдиреНрди рд▓реЗрдЦреЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рд▓рдЧрднрдЧ рд╣рд░ рдПрдХ рдореЗрдВ, рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╡рд╛рдХреНрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдорд╛рд░реНрдЧ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЛрдВ рдФрд░ рд╣реИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рдирдпрд╛ рдХрд╣рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред

рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдЬрд┐рд╕рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдореИрдВ рдЕрдкрдиреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдиреЗрдЯрдЕрдВрдЬреЗрд▓реНрд╕ рдореЗрдВ рдХрд░рддрд╛ рд░рд╣рд╛ рд╣реВрдВ , 120 рдЯреЗрдмрд▓ рд╣реИрдВ рдФрд░ рдЬреБрдбрд╝рдирд╛рд░ рд╕реЗ рд▓рдЧрднрдЧ 500 рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЗрд╕реЗ рднрдпрд╛рд╡рд╣ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд░ рдмрд╛рд░ рдкрд░реАрдХреНрд╖рд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ, рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдФрд░ рд▓реЛрдбрд┐рдВрдЧ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдХрд╛рдлреА рдХрд╖реНрдЯрдкреНрд░рдж рд╣реЛрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдХреЗрд╡рд▓ рдПрдХ рдпрд╛ рджреЛ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ, рдкрд░реАрдХреНрд╖рдг рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реАрдХреЗ, рдкрд╣рд▓реЗ рд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд, рдмрд▓реНрдХрд┐ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВ, рдФрд░ рдЕрдВрдд рдореЗрдВ рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧреА рдиреБрд╕реНрдЦрд╛ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рд╣реИ, рдЬреЛ рдЕрдм рдореЗрд░реЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ, рдкрд╣рд▓реЗ рд╣реА рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИред

рдФрд╕рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдмреНрд░реЗрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрдВрдЧреЗред рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓рдЧрднрдЧ рд╕рднреА рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдШрдЯрдХ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рд╣реИред

рдмрджрд▓реЗ рдореЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдбрд┐рд╕реНрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдорд╛рди рд▓реЗрдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕ рд▓реЛрдб рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рдорд┐рд▓реЗрдЧрд╛ред

рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд▓реЗрдирджреЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕


рдЕрдЧрд░ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдмрд┐рдЬрд▓реА рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдП рддреЛ рдХреЛрдИ рднреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдбрд┐рд╕реНрдХ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдРрд╕реА рдШрдЯрдирд╛рдУрдВ рдХреЗ рджреБрдЦрдж рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдпрджрд┐ рдЖрдк рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ MySQL рдпрд╛ PostgreSQL рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

MySQL рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╡реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ:

[mysqld]
default-table-type=innodb
transaction-isolation=READ-COMMITTED
innodb_flush_log_at_trx_commit = 0
skip-sync-frm=OFF


PostgreSQL рдЙрд╕реА рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП fsync = off рд╡рд┐рдХрд▓реНрдк рдХреЛ postgresql.conf рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реИред

рд░реИрдордбрд┐рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдЕрдзрд┐рдХ рдХрдЯреНрдЯрд░рдкрдВрдереА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдбрд┐рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд░реИрдо рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдирдпрд╛ рд╡рд┐рднрд╛рдЬрди tmpfs рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдореБрд╣рд┐рдо рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВред рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдмреЛрдирд╕ рдпрд╣ рд╣реИ рдХрд┐ рдмрд╕ рдПрдХ рд╡рд┐рднрд╛рдЬрди рдХреЛ рдЕрдирдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рд╕реЗ рд╕рд╛рд░рд╛ рдбреЗрдЯрд╛ рдбрд┐рд▓реАрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП SQLite


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЯреИрдВрдЧреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдХрд┐рдпрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрджрд┐ рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ SQLite рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореЗрдореЛрд░реА (рд╕реНрдЯреНрд░рд┐рдВрдЧ ": рдореЗрдореЛрд░реА:" рдХреЛ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╡рд┐рдзрд┐ рдЕрдХреЗрд▓реЗ рд╣реА рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

рдХрднреА-рдХрднреА рд╡реЗ рд╢рд┐рдХрд╛рдпрдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ ORM Django рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рдирд╣реАрдВ рдЫрд┐рдкрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ SQLite рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб (рдпрд╛рдиреА рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕) рдЕрдЪрд╛рдирдХ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╕рдордп рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рд░рд╣рддрд╛ рд╣реИ рдФрд░ MySQL рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдХрднреА-рдХрднреА рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрдереНрдп рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдХреБрдЫ "рдЕрд╕рд╛рдорд╛рдиреНрдп" рдХрд┐рдпрд╛ рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдиреЗ рдХреНрд╡реЗрд░реАрд╕реИрдЯ.рдЪреИрдЯреНрд░рд╛ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдк рдРрд╕реА рдЪреАрдЬреЗрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдЦрддрд░реЗ рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ SQLite рдЯреЗрд╕реНрдЯ рдмреЗрд╕ рдирд┐рд░реНрдорд╛рдг


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЬрдм рдкрд░реАрдХреНрд╖рдг рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ Django рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрдХреНрд░рдо рдХрд░рддрд╛ рд╣реИ:

1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╣реИ
2. рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рднреА рдЯреЗрдмрд▓ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рддрд╛ рд╣реИ
3. рдЬреБрдбрд╝рдирд╛рд░ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ initial_data рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
4. рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ
5. рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдмрдирд╛рдИ рдЧрдИ рд╣рд░ рдЪреАрдЬ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ

рдпрджрд┐ рдбреЗрдЯрд╛ рд╕реНрдореГрддрд┐ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ рддреЛ рдкрд╣рд▓рд╛ рдФрд░ рдЕрдВрддрд┐рдо рдЪрд░рдг рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд░рдг 2 рдФрд░ 3 рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рддреНрд░рд╛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рдЙрдЪреНрдЪ рдЧрддрд┐ рдХреЛ рдзреАрдорд╛ рдХрд░рддреЗ рд╣реИрдВ "рдХреЛрдб рдХреЛ рд╕рд╣реА рдХрд┐рдпрд╛ - рдкрд░реАрдХреНрд╖рдг рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛"ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдФрд░ рдлрд┐рдХреНрд╕реНрдЪрд░ рдХреЛрдб рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдмрд╛рд░ рдмрджрд▓рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдирд┐рд░рдВрддрд░ рдирд┐рд░реНрдорд╛рдг рдкрд░ рдХрд┐рд╕реА рддрд░рд╣ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рд╡реИрд╕реЗ, рдЪрд░рдг 2 рдФрд░ 3 syncdb рдкреНрд░рдмрдВрдзрди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рд╖реНрдкрд╛рджрди рд╣реИрдВред

рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рд╣реИ, рд╕рд┐рдВрдЯреАрдХрд▓реНрдм рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛, рдФрд░ рдХреЗрд╡рд▓ рддрдм рдЬрдм рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рдмрд╕ рддреИрдпрд╛рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВред SQLite рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдХреЛрдИ рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдирдХрд▓ рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди ": рдореЗрдореЛрд░реА:" рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд╛рднреЛрдВ рдХреЛ рдЦреЛрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдПрдХ рдЫреЛрдЯреА рдЦреЛрдЬ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдХрд╛ рд╣рд▓ рдореМрдЬреВрдж рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ SQLite рдореЗрдВ "рд╣реЙрдЯ" рдмреИрдХрдЕрдк (рд╡рдпрд╕реНрдХреЛрдВ рдХреА рддрд░рд╣) рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рдФрд░ рдпрджрд┐ рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреА рдХреЙрдкреА рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рддреЗ рд╣реИрдВ: рд╕реНрдореГрддрд┐:, рд╣рдореЗрдВ рдареАрдХ рд╡рд╣реА рдорд┐рд▓реЗрдЧрд╛ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП: рдПрдХ рдЖрд░рдВрднрд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдореГрддрд┐ рдореЗрдВ рдбреЗрдЯрд╛ред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдкрд╣рд▓реА рдХрдард┐рдирд╛рдИ рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рдирдХ рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ sqlite3 рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдЗрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрднреА рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП, рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реЗ APSW (рдПрдХ рдФрд░ рдкрд╛рдпрдерди SQLite рдЖрд╡рд░рдг) рдирд╛рдордХ рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВред

рджреВрд╕рд░реА рдХрдард┐рдирд╛рдИ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдирдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди: рдореЗрдореЛрд░реА: рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЕрдкрдиреА рдкреНрд░рддрд┐ (рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЦрд╛рд▓реА) рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдУрдЖрд░рдПрд╕рдПрдо рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХрд░реНрд╕рд░ рдХреЛ рдПрдкреАрдПрд╕рдбрдмреНрд▓реНрдпреВ рджреНрд╡рд╛рд░рд╛ рдЖрд░рдореНрднрд┐рдХ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЦрд╛рдирд╛ рд╣реЛрдЧрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдХ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдПрдХ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рдмрдЬрд╛рдп, sqlite3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдк apsw.Connection рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рдкреНрд░реЙрдХреНрд╕реА рдХрд░реЗрдЧрд╛ред

рддреЛ рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ:

1. рджреЛ ASPW рдХрдиреЗрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдореЗрдореЛрд░реА рдореЗрдВред
2. рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореЗрдореЛрд░реА рд╕реЗ рдбреЗрдЯрд╛ рдХреЙрдкреА рдХрд░реЗрдВред
3. "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" рдирд╛рдо рдХреЗ рд╕рд╛рде рдЙрдкрдирд╛рдо рдХреЗ рд▓рд┐рдП рдПрдирдПрдПрдордИ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рд╣рдо рдореЗрдореЛрд░реА рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░рддреЗ рд╣реБрдП рдПрдПрд╕рдкреАрдбрдмреНрд▓реНрдпреВ рдХрдиреЗрдХреНрд╢рди рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
4. рдХрд░реНрд╕рд░ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВред

рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ: рдХреЗрд╡рд▓ DATABASES рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ "Quickstart" рдирд╛рдо рдХрд╛ рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдлрд┐рд░ рдЪрд▓рд╛рдПрдВ ./manage.py syncdb --database quickstart ред

рд╕рднреА рдХреЛрдб рдЬреЛ рдЗрди рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реЗ 20 рд╕реЗ рдЕрдзрд┐рдХ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╣реИрдВред рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ

1. APSW рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
2. рдХреЛрдб рдХреЛ рдПрдХ рдЕрд▓рдЧ рдлрд╛рдЗрд▓ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд░рдЦреЗрдВ
3. quickstart рдирд╛рдо рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП settings.DABABASES рдореЗрдВ рдПрдХ рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝реЗрдВ
4. рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЪрд▓рд╛рдХрд░ рдмрдирд╛рдПрдБ ./manage.py syncdb --database quickstart
5. рдЪрд░ TEST_RUNNER рд╕реЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рд╕рд╣реЗрдЬреЗ рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд░реНрдЧ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗ
6. рдХреБрдЫ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред

Copy Source | Copy HTML
  1. рдЖрдпрд╛рдд рдПрдкреНрд╕
  2. django рд╕реЗред рдкрд░реАрдХреНрд╖рдг .Simple рдЖрдпрд╛рдд DjangoTestSuiteRunner
  3. django.db рдЖрдпрд╛рдд рдХрдиреЗрдХреНрд╢рди рд╕реЗ
  4. рд╡рд░реНрдЧ TestSuiteRunner (DjangoTestSuiteRunner):
  5. def setup_dat рдбреЗрдЯрд╛рдмреЗрд╕ (рд╕реНрд╡рдпрдВ, ** kwargs):
  6. quickstart_connection = рдХрдиреЗрдХреНрд╢рди [ 'quickstart' ]
  7. quickstart_dbname = quickstart_connection.settings_dict [ 'NAME' ]
  8. memory_connection = apsw.Connection ( ': рдореЗрдореЛрд░реА:' )
  9. quickstart_connection = apsw.Connection (quickstart_dbname)
  10. рдмреИрдХрдЕрдк рдХреЗ рд░реВрдк рдореЗрдВ memory_connection.backup ( 'рдореБрдЦреНрдп' , quickstart_connection, 'main' ) рдХреЗ рд╕рд╛рде :
  11. рдЬрдмрдХрд┐ рдмреИрдХрдЕрдк рдирд╣реАрдВред
  12. backup.step ( 100 )
  13. рдХрдиреЗрдХреНрд╢рди = рдХрдиреЗрдХреНрд╢рди [ 'рдбрд┐рдлрд╝реЙрд▓реНрдЯ' ]
  14. connection.settings_dict [ 'NAME' ] = memory_connection
  15. рдХрд░реНрд╕рд░ = рдХрдиреЗрдХреНрд╢рдиред рдХрд░реНрд╕рд░ ()
  16. def teardown_dat рдбреЗрдЯрд╛рдмреЗрд╕ (рд╕реНрд╡рдпрдВ, old_config, ** kwargs):
  17. рдкрд╛рд╕


рдирддреАрдЬрддрди, рдПрдХ рдПрдХрд▓ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп 18 рд╕реЗ 2 рд╕реЗрдХрдВрдб рддрдХ рдЧрд┐рд░ рдЧрдпрд╛: рдпрд╣ рдЬрд┐рддрдиреА рдмрд╛рд░ рдЪрд╛рд╣реЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЖрд░рд╛рдорджрд╛рдпрдХ рд╣реИред

рд╕рдорд╛рди рдХреЛрдб, рд▓реЗрдХрд┐рди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рдПрдХ рд╕рд╛рд╣рд╕рд┐рдХ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде "рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ!" (рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ) gist.github.com/1044215 рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпреЗ рд╕рд░рд▓ рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рддреЗрдЬреА рд╕реЗ, рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рдФрд░ рдЕрдзрд┐рдХ рдордЬрд╝рдмреВрддреА рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреАред

рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛


рд╡рд┐рд╡рд░рдг рдФрд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВ:

- Django рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдХреЛ рддреЗрдЬ рдХрд░рдирд╛ MySQL рдХреЗ рд╕рд╛рде рдЪрд▓рддрд╛ рд╣реИ
- рдЗрдиреЛрдбрдм рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рди рдореВрд▓ рдмрд╛рддреЗрдВ
- SQLite рдСрдирд▓рд╛рдЗрди рдмреИрдХрдЕрдк рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
- рдкрд╛рдпрдерди рдореЗрдВ SQLite рдХреЗ рдмреИрдХрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ

Source: https://habr.com/ru/post/In122574/


All Articles