Google
рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдиреЗ рдХреНрд▓рд╛рдЙрдб рдХреЗ рд▓рд┐рдП
рдХреНрд▓рд╛рдЙрдб рдПрд╕рдХреНрдпреВрдПрд▓ рдХреА рдШреЛрд╖рдгрд╛ рдХреА ред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рддреЛ django рд╕рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдерд╛, рдФрд░ рдлрд░рд╡рд░реА рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, django рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде
App Engine 1.6.2 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдм рдЖрдк рдРрдк-рдЗрдВрдЬрди-рдкреИрдЪ рдФрд░ django-nonre рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреВрджрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ bigtable рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдореЗрдВ рдмреЙрдХреНрд╕ рд╕реЗ django 1.2 рдФрд░ рдХреНрд▓рд╛рдЙрдб SQL рдореЙрдбреНрдпреВрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЬрд╝рд┐рдк рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдореЗрдВ рдкреИрдХрд┐рдВрдЧ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдмреИрд╕рд╛рдЦреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╛рджрд▓ рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЬреЛ рдХрджрдо рдЙрдард╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡реЗ рд╣реИрдВ:
- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ Google API рдХреЙрдиреНрд╕реЛрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд▓рд╛рдЙрдб рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯ рдПрдХреНрд╕реЗрд╕ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ 3 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЙрд╕рдХреЗ рдмрд╛рдж рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╣рдореЗрдВ рд╕реЗрд╡рд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪ рдорд┐рд▓реЗрдЧреАред
- рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ mysql рдХрдВрд╕реЛрд▓ рдХрдорд╛рдВрдбреНрд╕ рдХреА рд╕рд╛рдзрд╛рд░рдг рдкрд╣реБрдБрдЪ рджреА рдЬрд╛рддреА рд╣реИ, рдЬрд╣рд╛рдБ рд╣рдо рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
- рдЕрдм рд╣рдо рдПрдХ рдирд┐рдпрдорд┐рдд GAE рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ django + app.yaml рдлрд╝рд╛рдЗрд▓ рдкрд░ рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЕрдкрдирд╛ рдЖрд╡реЗрджрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
application: appname version: 1 runtime: python27 api_version: 1 threadsafe: true libraries: - name: django version: "1.2" builtins: - django_wsgi: on
- Django рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд▓рд╛рдЙрдб SQL рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ DATABASES рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
DATABASES = { 'default': { 'ENGINE': 'google.appengine.ext.django.backends.rdbms', 'INSTANCE': 'my_project:instance1', 'NAME': 'my_database', } }
рдпрд╣ рдореБрдЦреНрдп рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Syncdb рдмрдирд╛рдиреЗ рдХреЗ рдкрд╣рд▓реЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рд╣рдореЗрдВ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ "API Access" рдЯреИрдм рдкрд░
Google API рдХрдВрд╕реЛрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐
рдирд┐рд░реНрджреЗрд╢ рдХрд╣рддрд╛ рд╣реИ, рдЗрд╕реЗ
~/.googlesql_oauth2.dat
(рд╡рд┐рдВрдбреЛрдЬрд╝
%USERPROFILE%\.googlesql_oauth2.dat
)
%USERPROFILE%\.googlesql_oauth2.dat
ред Cloud SQL рдореЗрдВ syncdb рдХреЗ рджреМрд░рд╛рди, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЖрдзрд╛рд░ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ рдФрд░ рдпрджрд┐ рдХреЛрдИ рд╣реЛ рддреЛ рдЬреБрдбрд╝рдирд╛рд░ рд▓реЛрдб рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЬрдмрдХрд┐ рд╡рд┐рдХрд╛рд╕ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рд╣реИ, рдЕрдиреБрдкреНрд░рдпреЛрдЧ sqlite3 рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдзрдХреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВред
IMHO
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ Google рдиреЗ SQL рдбреЗрдЯрд╛рдмреЗрд╕ рджреЗрддреЗ рд╣реБрдП рд╕рд╣реА рдХрджрдо рдЙрдард╛рдпрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рдХреНрд▓рд╛рдЙрдб рдХреЗ рд╕рд╛рде рд╢реВрдЯрд┐рдВрдЧ рдирд╣реАрдВ рдХреАред рд╣рд╛рдВ, рдЙрд╕ рд╕рдордп рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╣реИ, рдФрд░ Google рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред рд╣рд╛рдВ, рдЕрдореЗрдЬреЛрдирд┐рдпрди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджрдореА рдХреА рдШрдВрдЯреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬреАрдПрдИ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдмрдбрд╝реА рд╕рд╛рдЗрдЯ рдирд╣реАрдВ рд╣реИ,
рдПрдХ рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░
рдХреА рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдереА , рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐ рдПрдХ рдЬреАрд╡рд┐рдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдореГрдд рд╣реИред рдмрдбрд╝реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдЬрд╛рдп GAE рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рднреА рдирд╣реАрдВ рд╣реИрдВ, рдЬрдм рдЖрд╕-рдкрд╛рд╕ рдХреЛрдИ рдЕрдореЗрдЬрд╝рди рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдЖрдк рдЕрдкрдиреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдкреНрд░рд╡рд╛рд╕ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдХреБрдЫ рдЫреЛрдЯрд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рдмреНрд▓реЙрдЧ, рдПрдХ рд╡реНрдпрд╡рд╕рд╛рдп рдХрд╛рд░реНрдб рд╕рд╛рдЗрдЯ рдЖрджрд┐ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдФрд░ рдЬреАрдПрдИ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдХреНрдпреЛрдВ рд╕рдордЭреЗрдВ, рдЬрдм рдЖрдк рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдХреНрд▓рд╛рдЙрдб рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рд▓реЙрдиреНрдЪ рдХреЗ рд╕рд╛рде, рд╕реНрдерд┐рддрд┐ рдереЛрдбрд╝реА рд╕реА рднреА рдмрджрд▓ рд╕рдХрддреА рд╣реИред рдЕрдм рдЖрдк рдЬреАрдПрдИ рдкрд░ рдордзреНрдпрдо рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ django рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдбреЛрдореЗрди рдХреЛ рдлрд╛рд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рд░реНрд╡рд░ рдкреНрд░рд╢рд╛рд╕рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╕ рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдЬреАрдПрдИ рдХреЗрд╡рд▓ рд╢реБрджреНрдз рдЕрдЬрдЧрд░ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╕рднреА рдореЙрдбреНрдпреВрд▓, рд╕рд╛рде рд╣реА рдЖрд╡реЗрджрди рд╕реЗ http рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рд╣рдореЗрдВ рдЕрднреА рднреА рдЬреАрдПрдИ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдлрд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ, рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдФрд░ рдореЗрдореЗрдЪреЗ рдореЗрдВ рдХреИрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрди рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде рднреА, рдпрд╣ "рд╕рд░рд▓" рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдзрд┐рдХрд╛рдВрд╢ рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдЧрд╛ред
рд╕рдВрджрд░реНрдн: