{"id":9109,"date":"2023-02-28T16:43:42","date_gmt":"2023-02-28T13:13:42","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/"},"modified":"2023-02-28T16:43:42","modified_gmt":"2023-02-28T13:13:42","slug":"how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/","title":{"rendered":"\u0646\u062d\u0648\u0647 \u0633\u0627\u062e\u062a CRUD API \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Python Flask \u0648 SQLAlchemy ORM \u0628\u0627 PostgreSQL"},"content":{"rendered":"<div data-article-id=\"1382391\" id=\"article-body\">\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0646\u062d\u0648\u0647 \u0633\u0627\u062e\u062a \u06cc\u06a9 CRUD API \u0633\u0627\u062f\u0647 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u06cc\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u062f \u06af\u0631\u0641\u062a <strong>\u0641\u0644\u0627\u0633\u06a9<\/strong>\u060c <strong>SQLAlchemy<\/strong>\u060c \u0648 <strong>PostgreSQL<\/strong>.<\/p>\n<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/#%D9%81%D9%87%D8%B1%D8%B3%D8%AA_%D9%85%D8%B7%D8%A7%D9%84%D8%A8\" >\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/#%D9%85%D8%B9%D8%B1%D9%81%DB%8C\" >\u0645\u0639\u0631\u0641\u06cc<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%D8%A2%D9%85%D9%88%D8%B2%D8%B4\" >\u0646\u062a\u06cc\u062c\u0647 \u0622\u0645\u0648\u0632\u0634<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/#%D9%85%D8%B1%D8%A7%D8%AD%D9%84_%D8%A2%D9%85%D9%88%D8%B2%D8%B4\" >\u0645\u0631\u0627\u062d\u0644 \u0622\u0645\u0648\u0632\u0634<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/#%D8%AA%D8%B9%D8%A7%D8%B1%DB%8C%D9%81\" >\u062a\u0639\u0627\u0631\u06cc\u0641<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/#%D9%BE%DB%8C%D8%B4_%D9%86%DB%8C%D8%A7%D8%B2%D9%87%D8%A7\" >\u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/#%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D9%BE%D8%B1%D9%88%DA%98%D9%87\" >\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/#%D8%B4%D9%85%D8%A7%D8%B1%D9%87_1_%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87_%D8%AF%D8%A7%D8%AF%D9%87_PostgreSQL_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0634\u0645\u0627\u0631\u0647 1 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 PostgreSQL \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/#%D8%B4%D9%85%D8%A7%D8%B1%D9%87_2_%D9%85%D8%AD%DB%8C%D8%B7_%D9%85%D8%AC%D8%A7%D8%B2%DB%8C_%D8%B1%D8%A7_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0634\u0645\u0627\u0631\u0647 2 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/#%D8%B4%D9%85%D8%A7%D8%B1%D9%87_3_Dependencies_%D9%BE%D8%B1%D9%88%DA%98%D9%87_%D8%B1%D8%A7_%D9%86%D8%B5%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0634\u0645\u0627\u0631\u0647 3 Dependencies \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/#%D9%86%D9%88%D8%B4%D8%AA%D9%86_%DA%A9%D8%AF_%D9%BE%D8%B1%D9%88%DA%98%D9%87\" >\u0646\u0648\u0634\u062a\u0646 \u06a9\u062f \u067e\u0631\u0648\u0698\u0647<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/#_1_%D8%B4%D8%B1%D9%88%D8%B9_%D8%A8%D9%87_%DA%A9%D8%A7%D8%B1_%D8%A8%D8%A7_%D9%81%D8%A7%DB%8C%D9%84_%D9%87%D8%A7%DB%8C_%D8%A7%D8%B5%D9%84%DB%8C_%E2%80%9Capp%D8%8C_init_%D8%8C_config%D8%8C_env%E2%80%9D\" ># 1 \u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u0627\u0631 \u0628\u0627 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0627\u0635\u0644\u06cc &#8220;app\u060c __init__\u060c config\u060c env&#8221;<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/#2_%D8%B4%D8%B1%D9%88%D8%B9_%D8%A8%D9%87_%DA%A9%D8%A7%D8%B1_%D8%A8%D8%A7_%D9%81%D8%A7%DB%8C%D9%84_%D9%87%D8%A7%DB%8C_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%87%D8%A7\" >#2 \u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u0627\u0631 \u0628\u0627 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/#%D8%B4%D9%85%D8%A7%D8%B1%D9%87_3_%D8%A7%D8%B1%D8%B3%D8%A7%D9%84_%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA_%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Postman\" >\u0634\u0645\u0627\u0631\u0647 3 \u0627\u0631\u0633\u0627\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Postman<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/#%D8%A8%D8%A7_SQLAlchemy_Basic_Relationships_%D8%B4%D8%B1%D9%88%D8%B9_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0628\u0627 SQLAlchemy Basic Relationships \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/how-to-build-a-crud-api-using-python-flask-and-sqlalchemy-orm-with-postgresql-2jjj\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87\" >\u0646\u062a\u06cc\u062c\u0647<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%81%D9%87%D8%B1%D8%B3%D8%AA_%D9%85%D8%B7%D8%A7%D9%84%D8%A8\"><\/span>\n<p>  \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B9%D8%B1%D9%81%DB%8C\"><\/span>\n<p>  \u0645\u0639\u0631\u0641\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>\u0686\u06cc\u0632 \u0686\u0646\u062f\u0634 \u0648 \u06a9\u062b\u06cc\u0641<\/strong> \u0628\u0647 \u0686\u0647\u0627\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a \u0627\u0633\u0627\u0633\u06cc \u06a9\u0647 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631\u06cc \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f \u0627\u0634\u0627\u0631\u0647 \u062f\u0627\u0631\u062f: <strong>\u0627\u064a\u062c\u0627\u062f \u0643\u0631\u062f\u0646<\/strong>\u060c <strong>\u062e\u0648\u0627\u0646\u062f\u0646<\/strong>\u060c <strong>\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc<\/strong>\u060c \u0648 <strong>\u062d\u0630\u0641<\/strong>.<\/p>\n<blockquote>\n<p>\ud83d\udcdd <em>\u062a\u0648\u062c\u0647: \u0627\u06cc\u0646 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0645 \u0639\u0645\u0642 \u0628\u0627 \u0628\u0647\u062a\u0631\u06cc\u0646 \u062a\u0645\u0631\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0627\u0631 \u0641\u0627\u06cc\u0644 \u0627\u0633\u062a \u062a\u0627 \u0627\u06cc\u062f\u0647 \u0628\u06af\u06cc\u0631\u06cc\u062f \u0648 \u0634\u0631\u0648\u0639 \u0628\u0647 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0686\u0627\u0631\u0686\u0648\u0628 \u06a9\u0646\u06cc\u062f!<\/em><\/p>\n<\/blockquote>\n<p>Flask vs Django: \u06a9\u062f\u0627\u0645 \u0686\u0627\u0631\u0686\u0648\u0628 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u0645\u061f  \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0641\u0627\u0648\u062a \u0647\u0627\u06cc \u062f\u0642\u06cc\u0642 \u0628\u06cc\u0646 \u062c\u0646\u06af\u0648 \u0648 \u0641\u0644\u0627\u0633\u06a9 \u0631\u0627 \u0628\u06cc\u0627\u0628\u06cc\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%D8%A2%D9%85%D9%88%D8%B2%D8%B4\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647 \u0622\u0645\u0648\u0632\u0634<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Flask CRUD \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 API \u0648\u0631\u0648\u062f\u06cc \u0647\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f\u060c \u062e\u0648\u0627\u0646\u062f\u0646\u060c \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0648 \u062d\u0630\u0641 \u06a9\u0646\u0646\u062f.  API \u0642\u0627\u062f\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f:<\/p>\n<ul>\n<li><strong>\u0644\u06cc\u0633\u062a \u062a\u0645\u0627\u0645 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc \u0634\u06cc<\/strong><\/li>\n<li><strong>\u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u062c\u062f\u06cc\u062f \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f<\/strong><\/li>\n<li><strong>\u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u062e\u0627\u0635 \u0628\u06af\u06cc\u0631\u06cc\u062f<\/strong><\/li>\n<li><strong>\u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u062e\u0627\u0635 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f<\/strong><\/li>\n<li><strong>\u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u062e\u0627\u0635 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f<\/strong><\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%A7%D8%AD%D9%84_%D8%A2%D9%85%D9%88%D8%B2%D8%B4\"><\/span>\n<p>  \u0645\u0631\u0627\u062d\u0644 \u0622\u0645\u0648\u0632\u0634<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li>\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647:\n<ul>\n<li>\u0627\u06cc\u062c\u0627\u062f \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 PostgreSQL<\/li>\n<li>\u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f<\/li>\n<li>Project Dependencies \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/li>\n<\/ul>\n<\/li>\n<li>\u0646\u0648\u0634\u062a\u0646 \u06a9\u062f \u067e\u0631\u0648\u0698\u0647:\n<ul>\n<li>\u0646\u0648\u0634\u062a\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0627\u0635\u0644\u06cc<\/li>\n<li>\u0646\u0648\u0634\u062a\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627<\/li>\n<li>\u0627\u0631\u0633\u0627\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Postman<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AA%D8%B9%D8%A7%D8%B1%DB%8C%D9%81\"><\/span>\n<p>  \u062a\u0639\u0627\u0631\u06cc\u0641<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<blockquote>\n<p>\ud83d\udca1 <em>\u0646\u06a9\u062a\u0647: \u0627\u0632 \u0627\u06cc\u0646 \u062a\u0639\u0627\u0631\u06cc\u0641 \u062f\u0631 \u0627\u0648\u0644\u06cc\u0646 \u0632\u0645\u0627\u0646 \u062e\u0648\u0627\u0646\u062f\u0646 \u0635\u0631\u0641 \u0646\u0638\u0631 \u06a9\u0646\u06cc\u062f!<\/em><\/p>\n<\/blockquote>\n<blockquote>\n<p>\u0641\u0644\u0627\u0633\u06a9 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 a \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f <strong>\u0686\u0627\u0631\u0686\u0648\u0628 WSGI<\/strong>.  \u06a9\u0647 \u0645\u062e\u0641\u0641 \u0622\u0646 \u0627\u0633\u062a <strong>\u0631\u0627\u0628\u0637 \u062f\u0631\u0648\u0627\u0632\u0647 \u0648\u0628 \u0633\u0631\u0648\u0631<\/strong>.  \u0627\u0633\u0627\u0633\u0627\u064b\u060c \u0627\u06cc\u0646 \u0631\u0627\u0647\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0648\u0628 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u06cc\u0627 \u0686\u0627\u0631\u0686\u0648\u0628\u200c\u0647\u0627\u06cc \u0648\u0628 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n<p>Flask \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648\u0628 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0641\u0644\u0627\u0633\u06a9 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9:<\/p>\n<ul>\n<li>\u0686\u0627\u0631\u0686\u0648\u0628 \u0633\u0628\u06a9 \u0648\u0632\u0646<\/li>\n<li>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <strong>MVC<\/strong> \u0627\u0644\u06af\u0648\u06cc \u0637\u0631\u0627\u062d\u06cc<\/li>\n<li>\u062f\u0627\u0631\u0627\u06cc \u0633\u0631\u0648\u0631 \u062a\u0648\u0633\u0639\u0647 \u062f\u0627\u062e\u0644\u06cc<\/li>\n<li>\u062f\u06cc\u0628\u0627\u06af\u0631 \u0633\u0631\u06cc\u0639 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<\/ul>\n<\/blockquote>\n<blockquote>\n<p>SQLAlchemy \u06cc\u06a9 \u201d \u062e\u0648\u0628 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u06a9\u0646\u062f<strong>\u067e\u0627\u06cc\u062a\u0648\u0646\u06cc\u06a9<\/strong>\u201d \u0631\u0648\u0634 \u062a\u0639\u0627\u0645\u0644 \u0628\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u0647\u0627\u06cc \u062f\u0627\u062f\u0647.<\/p>\n<p>SQLAlchemy \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0648 \u067e\u0627\u06cc\u06af\u0627\u0647 \u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u0631\u0627 \u062a\u0633\u0647\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u062f.  \u0628\u06cc\u0634\u062a\u0631 \u0627\u0648\u0642\u0627\u062a \u0627\u0632 \u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f <strong>\u0646\u06af\u0627\u0634\u062a \u0631\u0627\u0628\u0637\u0647 \u0627\u06cc \u0634\u06cc<\/strong> (<strong>ORM<\/strong>) \u0627\u0628\u0632\u0627\u0631\u06cc \u06a9\u0647 <u>\u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0631\u0627 \u0628\u0647 \u062c\u062f\u0627\u0648\u0644 \u062a\u0631\u062c\u0645\u0647 \u0645\u06cc \u06a9\u0646\u062f <\/u> \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0631\u0627\u0628\u0637\u0647 \u0627\u06cc \u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 <u>\u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u062a\u0627\u0628\u0639 \u0631\u0627 \u0628\u0647 \u062f\u0633\u062a\u0648\u0631\u0627\u062a SQL \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u062f<\/u>.<\/p>\n<\/blockquote>\n<blockquote>\n<p>Alembic \u06cc\u06a9 \u0627\u0628\u0632\u0627\u0631 \u0627\u0646\u062a\u0642\u0627\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0633\u0628\u06a9 \u0648\u0632\u0646 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0627 SQLAlchemy Database Toolkit \u0628\u0631\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0627\u0633\u062a.<\/p>\n<p>Alembic \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0641\u06cc\u062f \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u06af\u0633\u062a\u0631\u062f\u0647 \u0628\u0631\u0627\u06cc \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f <strong>\u0645\u0647\u0627\u062c\u0631\u062a \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647<\/strong>.  \u0645\u06cc \u062a\u0648\u0627\u0646 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u062c\u062f\u0627\u0648\u0644\u060c \u062f\u0631\u062c \u062f\u0627\u062f\u0647 \u06cc\u0627 \u062d\u062a\u06cc \u0627\u0646\u062a\u0642\u0627\u0644 \u062a\u0648\u0627\u0628\u0639 \u0627\u0632 \u06cc\u06a9 \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u0628\u0647 \u0637\u0631\u062d \u062f\u06cc\u06af\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f.  \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u062a\u0648\u0627\u0646\u062f \u0647\u0645\u0647 \u0627\u06cc\u0646 \u0648\u0638\u0627\u06cc\u0641 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f\u060c \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u0632 SQLAlchemy \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f\u060c \u06cc\u06a9 ORM \u06a9\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 PostgreSQL \u0648 \u0633\u0627\u06cc\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u0631\u0627\u0628\u0637\u0647 \u0627\u06cc \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062a.<\/p>\n<\/blockquote>\n<blockquote>\n<p>Model-View-Controller (MVC) \u06cc\u06a9 \u0627\u0644\u06af\u0648\u06cc \u0645\u0639\u0645\u0627\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0631\u0627 \u0628\u0647 \u0633\u0647 \u06af\u0631\u0648\u0647 \u0627\u0635\u0644\u06cc \u0627\u0632 \u0627\u062c\u0632\u0627\u0621 \u062a\u0642\u0633\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f: <strong>\u0645\u062f\u0644 \u0647\u0627<\/strong>\u060c <strong>\u0628\u0627\u0632\u062f\u06cc\u062f\u0647\u0627<\/strong>\u060c \u0648 <strong>\u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0647\u0627<\/strong>.<\/p>\n<p>MVC (Model-View-Controller) \u0627\u0644\u06af\u0648\u06cc\u06cc \u062f\u0631 \u0637\u0631\u0627\u062d\u06cc \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0631\u0627\u0628\u0637 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u060c \u062f\u0627\u062f\u0647 \u0647\u0627 \u0648 \u0645\u0646\u0637\u0642 \u06a9\u0646\u062a\u0631\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0627\u06cc\u0646 \u0628\u0631 \u062c\u062f\u0627\u06cc\u06cc \u0628\u06cc\u0646 \u0645\u0646\u0637\u0642 \u062a\u062c\u0627\u0631\u06cc \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0648 \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062a\u0623\u06a9\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u06cc\u0646 &#8220;\u062a\u0641\u06a9\u06cc\u06a9 \u0646\u06af\u0631\u0627\u0646\u06cc \u0647\u0627&#8221; \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0627\u0631 \u0628\u0647\u062a\u0631 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0628\u0647\u062a\u0631 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/blockquote>\n<p>\n      <\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%D8%B4_%D9%86%DB%8C%D8%A7%D8%B2%D9%87%D8%A7\"><\/span>\n<p>  \u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D9%BE%D8%B1%D9%88%DA%98%D9%87\"><\/span>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B4%D9%85%D8%A7%D8%B1%D9%87_1_%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87_%D8%AF%D8%A7%D8%AF%D9%87_PostgreSQL_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0634\u0645\u0627\u0631\u0647 1 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 PostgreSQL \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u0647\u062f\u0641<\/strong>: \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062c\u062f\u06cc\u062f \u0628\u0627 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<blockquote>\n<p>\ud83d\udca1 <em>\u0646\u06a9\u062a\u0647: \u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u0627 \u0646\u0627\u0645 \u0647\u0627 \u0648 \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631 \u0632\u06cc\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u060c \u0633\u067e\u0633 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0648\u0627\u0642\u0639\u06cc \u0628\u0627 \u0646\u0627\u0645 \u0647\u0627 \u0648 \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f!<\/em><\/p>\n<\/blockquote>\n<p>\u0645\u0627 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0647 \u0646\u0627\u0645 &#8220;<strong>testdb<\/strong>&#8220;\u0648 \u06a9\u0627\u0631\u0628\u0631&#8221;<strong>\u06a9\u0627\u0631\u0628\u0631 \u062a\u0633\u062a<\/strong>&#8220;\u0628\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631&#8221;<strong>\u0642\u0628\u0648\u0644\u06cc \u0622\u0632\u0645\u0648\u0646<\/strong>&#8220;.<\/p>\n<p>1- \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u0648\u06cc\u0646\u062f\u0648\u0632\u060c \u0633\u0631\u0648\u0631 PostgreSQL \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>~ <span class=\"nb\">sudo <\/span>service postgresql start\n\u279c <span class=\"k\">*<\/span> Starting PostgreSQL 14 database server\n<span class=\"c\"># 14 is the PostgreSQL Server Version<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<blockquote>\n<p>\ud83d\udcdd <em>\u0646\u06a9\u062a\u0647 \u0645\u0647\u0645: \u0647\u0631 \u0628\u0627\u0631 \u06a9\u0647 \u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u062f\u0646\u0648\u06cc\u0633\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0628\u0627\u06cc\u062f \u0633\u0631\u0648\u0631 PostgreSQL \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645!<\/em><\/p>\n<\/blockquote>\n<p>2- \u067e\u0648\u0633\u062a\u0647 PostgreSQL \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>~ <span class=\"nb\">sudo<\/span> <span class=\"nt\">-u<\/span> postgres psql\n\u279c <span class=\"nv\">postgres<\/span><span class=\"o\">=<\/span><span class=\"c\">#<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>3- \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>&lt;!-- create database DBNAME; --&gt;\npostgres=# create database testdb;\n\u279c CREATE DATABASE\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>4- \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u060c \u0633\u067e\u0633 \u0628\u0647 \u0622\u0646 \u0627\u0645\u062a\u06cc\u0627\u0632 \u0628\u062f\u0647\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>&lt;!-- create user USERNAME with encrypted password 'PASSWORD'; --&gt;\npostgres=# create user testuser with encrypted password 'testpass';\n\u279c CREATE ROLE\n\n&lt;!-- grant all privileges on database DBNAME to USERNAME; --&gt;\npostgres=# grant all privileges on database testdb to testuser;\n\u279c GRANT\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>5- \u0627\u0632 Shell \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>postgres=# \\q\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>6- \u0628\u0647 New Database \u0645\u062a\u0635\u0644 \u0634\u0648\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>~ psql <span class=\"nt\">-U<\/span> testuser <span class=\"nt\">-h<\/span> 127.0.0.1 <span class=\"nt\">-d<\/span> testdb\nPassword <span class=\"k\">for <\/span>user testuser: testpass\n\u279c <span class=\"nv\">testdb<\/span><span class=\"o\">=&gt;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>7- Connection \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>testdb=&gt; \\conninfo\n\u279c You are connected to database \"testdb\" as user \"testuser\" on host \"127.0.0.1\" at port \"5432\".\n&lt;!-- We need this information later for the env file --&gt;\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062c\u062f\u06cc\u062f PostgreSQL \u0645\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u06cc \u0628\u0631\u0648\u06cc\u0645!<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B4%D9%85%D8%A7%D8%B1%D9%87_2_%D9%85%D8%AD%DB%8C%D8%B7_%D9%85%D8%AC%D8%A7%D8%B2%DB%8C_%D8%B1%D8%A7_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0634\u0645\u0627\u0631\u0647 2 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>\u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc \u0686\u06cc\u0633\u062a\u061f<\/strong><\/li>\n<\/ul>\n<blockquote>\n<p>\u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc \u0627\u0628\u0632\u0627\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc \u0645\u062c\u0627\u0632\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0627\u06cc\u0632\u0648\u0644\u0647 \u0628\u0631\u0627\u06cc \u0622\u0646\u0647\u0627 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u06cc\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0647\u0645\u062a\u0631\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u06a9\u062b\u0631 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>virtualenv \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 virtualenv \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u0627\u0632 \u0646\u0635\u0628 \u0628\u0633\u062a\u0647\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u062f\u0631 \u0633\u0637\u062d \u062c\u0647\u0627\u0646\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645 \u06cc\u0627 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0631\u0627 \u062e\u0631\u0627\u0628 \u06a9\u0646\u062f\u060c \u0627\u062c\u062a\u0646\u0627\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n<\/blockquote>\n<p>\u0645\u0627 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0632\u06cc\u0631 \u0622\u0646 \u0631\u0627 \u0641\u0639\u0627\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"c\"># virtualenv -p python3 ProjectName<\/span>\n~ virtualenv <span class=\"nt\">-p<\/span> python3 Flask-SQLAlchemy-PostgreSQL\n\u279c created virtual environment\n\n<span class=\"nb\">cd <\/span>Flask-SQLAlchemy-PostgreSQL\n\n<span class=\"nb\">source <\/span>bin\/activate\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B4%D9%85%D8%A7%D8%B1%D9%87_3_Dependencies_%D9%BE%D8%B1%D9%88%DA%98%D9%87_%D8%B1%D8%A7_%D9%86%D8%B5%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0634\u0645\u0627\u0631\u0647 3 Dependencies \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u067e\u0633 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0641\u0639\u0627\u0644 \u0633\u0627\u0632\u06cc virtualenv\u060c \u0628\u0627 \u0646\u0635\u0628 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u06cc\u0645<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>pip <span class=\"nb\">install <\/span>python-dotenv flask flask-sqlalchemy Flask-Migrate flask_validator psycopg2-binary\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0633\u067e\u0633 \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0628\u0647 \u0646\u0627\u0645 src \u0628\u0633\u0627\u0632\u06cc\u062f \u06a9\u0647 \u062d\u0627\u0648\u06cc \u06a9\u062f\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0628\u0627\u0634\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">mkdir <\/span>src <span class=\"o\">&amp;&amp;<\/span> <span class=\"nb\">cd<\/span> <span class=\"nv\">$_<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0622\u062e\u0631\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0642\u0628\u0644 \u0627\u0632 \u0634\u0631\u0648\u0639 \u06a9\u062f\u060c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0646\u06cc\u0627\u0632\u0645\u0646\u062f\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>python <span class=\"nt\">-m<\/span> pip freeze <span class=\"o\">&gt;<\/span> requirements.txt\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D9%88%D8%B4%D8%AA%D9%86_%DA%A9%D8%AF_%D9%BE%D8%B1%D9%88%DA%98%D9%87\"><\/span>\n<p>  \u0646\u0648\u0634\u062a\u0646 \u06a9\u062f \u067e\u0631\u0648\u0698\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<blockquote>\n<p>\ud83d\udcdd <em>\u0646\u06a9\u062a\u0647: \u062f\u0631 Flask \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0631\u0627 \u0647\u0631 \u0637\u0648\u0631 \u06a9\u0647 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u06cc\u062f \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0627\u062f\u0647 \u0648 \u0646\u0627\u0645\u200c\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0627\u0645\u0627 \u0645\u0627 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0646\u0627\u0645\u200c\u06af\u0630\u0627\u0631\u06cc \u0648 \u0633\u0627\u062e\u062a\u0627\u0631\u0628\u0646\u062f\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u06cc\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06af\u0631\u0641\u062a.<\/em><\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>\u251c\u2500\u2500 bin\n\u251c\u2500\u2500 include\n\u251c\u2500\u2500 lib\n\u251c\u2500\u2500 pyvenv.cfg\n\u2514\u2500\u2500 src\n    \u251c\u2500\u2500 config.py\n    \u251c\u2500\u2500 .env\n    \u251c\u2500\u2500 .env.sample\n    \u251c\u2500\u2500 __init__.py\n    \u251c\u2500\u2500 app.py\n    \u251c\u2500\u2500 accounts\n    \u2502   \u251c\u2500\u2500 controllers.py\n    \u2502   \u251c\u2500\u2500 models.py\n    \u2502   \u2514\u2500\u2500 urls.py\n    \u251c\u2500\u2500 items\n    \u2502   \u251c\u2500\u2500 controllers.py\n    \u2502   \u251c\u2500\u2500 models.py\n    \u2502   \u2514\u2500\u2500 urls.py\n    \u251c\u2500\u2500 requirements.txt\n    \u2514\u2500\u2500 README.md\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"_1_%D8%B4%D8%B1%D9%88%D8%B9_%D8%A8%D9%87_%DA%A9%D8%A7%D8%B1_%D8%A8%D8%A7_%D9%81%D8%A7%DB%8C%D9%84_%D9%87%D8%A7%DB%8C_%D8%A7%D8%B5%D9%84%DB%8C_%E2%80%9Capp%D8%8C_init_%D8%8C_config%D8%8C_env%E2%80%9D\"><\/span>\n<p>  # 1 \u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u0627\u0631 \u0628\u0627 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0627\u0635\u0644\u06cc &#8220;<code>app<\/code>\u060c <code>__init__<\/code>\u060c <code>config<\/code>\u060c <code>env<\/code>&#8221;<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0627\u06a9\u062b\u0631 \u0622\u0645\u0648\u0632\u0634 \u0647\u0627\u06cc Flask\u060c \u0645\u062a\u0648\u062c\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f \u06a9\u0647 \u0622\u0646\u0647\u0627 \u0641\u0642\u0637 \u0627\u06cc\u0646 \u0631\u0627 \u062f\u0627\u0631\u0646\u062f <code>app.py<\/code> \u0641\u0627\u06cc\u0644\u060c \u06a9\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.  \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0686\u0646\u062f\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u06a9\u0647 \u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 \u06a9\u062f \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0647 \u062e\u0635\u0648\u0635 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u0628\u0633\u06cc\u0627\u0631 \u0622\u0633\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f 4 \u0641\u0627\u06cc\u0644 \u0627\u0635\u0644\u06cc \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">touch <\/span>app.py __init__.py config.py .env\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645 \u0628\u0647 \u063a\u0648\u0627\u0635\u06cc \u0639\u0645\u06cc\u0642 \u062a\u0631 \u062f\u0631 \u0647\u0631 \u0641\u0627\u06cc\u0644:<\/p>\n<blockquote>\n<p><em>\u0646\u0638\u0631 \u0646\u0627\u0645\u0637\u0644\u0648\u0628: \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0628\u0647\u062a\u0631 \u0627\u0633\u062a <strong><code>config.py<\/code><\/strong>  \u0646\u0633\u0628\u062a \u0628\u0647. \u062a\u0627 <strong><code>app.py<\/code><\/strong><\/em><\/p>\n<\/blockquote>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0641\u0631\u0636 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u0627 4 \u062d\u0627\u0644\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062f\u0627\u0631\u06cc\u0645: <strong>\u062a\u0648\u0633\u0639\u0647<\/strong>\u060c <strong>\u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0631\u062f\u0646<\/strong>\u060c <strong>\u0635\u062d\u0646\u0647 \u0633\u0627\u0632\u06cc<\/strong>\u060c \u0648 <strong>\u062a\u0648\u0644\u06cc\u062f<\/strong>.  \u0645\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u06a9\u062f\u0627\u0645 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0628\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f Configuration \u2014 Flask-SQLAlchemy Documentation \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.  \u0645\u0647\u0645\u062a\u0631\u06cc\u0646 \u0622\u0646\u0647\u0627 \u0627\u06cc\u0646 \u0627\u0633\u062a <code>SQLALCHEMY_DATABASE_URI<\/code> \u06a9\u0647 \u0628\u0631\u0627\u0628\u0631 \u0628\u0627 \u0644\u06cc\u0646\u06a9 \u0627\u062a\u0635\u0627\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 PostgreSQL \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">import<\/span> <span class=\"nn\">os<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">Config<\/span><span class=\"p\">:<\/span>\n      <span class=\"n\">SQLALCHEMY_TRACK_MODIFICATIONS<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">True<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">DevelopmentConfig<\/span><span class=\"p\">(<\/span><span class=\"n\">Config<\/span><span class=\"p\">):<\/span>\n      <span class=\"n\">DEVELOPMENT<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">True<\/span>\n      <span class=\"n\">DEBUG<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">True<\/span>\n      <span class=\"n\">SQLALCHEMY_DATABASE_URI<\/span> <span class=\"o\">=<\/span> <span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">getenv<\/span><span class=\"p\">(<\/span><span class=\"s\">\"DEVELOPMENT_DATABASE_URL\"<\/span><span class=\"p\">)<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">TestingConfig<\/span><span class=\"p\">(<\/span><span class=\"n\">Config<\/span><span class=\"p\">):<\/span>\n      <span class=\"n\">TESTING<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">True<\/span>\n      <span class=\"n\">SQLALCHEMY_DATABASE_URI<\/span> <span class=\"o\">=<\/span> <span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">getenv<\/span><span class=\"p\">(<\/span><span class=\"s\">\"TEST_DATABASE_URL\"<\/span><span class=\"p\">)<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">StagingConfig<\/span><span class=\"p\">(<\/span><span class=\"n\">Config<\/span><span class=\"p\">):<\/span>\n      <span class=\"n\">DEVELOPMENT<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">True<\/span>\n      <span class=\"n\">DEBUG<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">True<\/span>\n      <span class=\"n\">SQLALCHEMY_DATABASE_URI<\/span> <span class=\"o\">=<\/span> <span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">getenv<\/span><span class=\"p\">(<\/span><span class=\"s\">\"STAGING_DATABASE_URL\"<\/span><span class=\"p\">)<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">ProductionConfig<\/span><span class=\"p\">(<\/span><span class=\"n\">Config<\/span><span class=\"p\">):<\/span>\n      <span class=\"n\">DEBUG<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">False<\/span>\n      <span class=\"n\">SQLALCHEMY_DATABASE_URI<\/span> <span class=\"o\">=<\/span> <span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">getenv<\/span><span class=\"p\">(<\/span><span class=\"s\">\"PRODUCTION_DATABASE_URL\"<\/span><span class=\"p\">)<\/span>\n\n<span class=\"n\">config<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n      <span class=\"s\">\"development\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">DevelopmentConfig<\/span><span class=\"p\">,<\/span>\n      <span class=\"s\">\"testing\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">TestingConfig<\/span><span class=\"p\">,<\/span>\n      <span class=\"s\">\"staging\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">StagingConfig<\/span><span class=\"p\">,<\/span>\n      <span class=\"s\">\"production\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">ProductionConfig<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u062d\u0627\u0644\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648 URL \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u062d\u0627\u0644\u062a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"c1\"># Configuration Mode =&gt; development, testing, staging, or production\n<\/span><span class=\"n\">CONFIG_MODE<\/span> <span class=\"o\">=<\/span> <span class=\"n\">development<\/span>\n\n<span class=\"c1\"># POSTGRESQL_DATABASE_URI =&gt; 'postgresql+psycopg2:\/\/user:password@host:port\/database'\n<\/span><span class=\"n\">DEVELOPMENT_DATABASE_URL<\/span> <span class=\"o\">=<\/span> <span class=\"s\">'postgresql+psycopg2:\/\/testuser:testpass@localhost:5432\/testdb'<\/span>\n<span class=\"n\">TEST_DATABASE_URL<\/span>        <span class=\"o\">=<\/span>\n<span class=\"n\">STAGING_DATABASE_URL<\/span>     <span class=\"o\">=<\/span>\n<span class=\"n\">PRODUCTION_DATABASE_URL<\/span>  <span class=\"o\">=<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0641\u0631\u0645\u062a URL \u0627\u062a\u0635\u0627\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 PostgreSQL <code>postgresql+psycopg2:\/\/user:password@host:port\/database<\/code>.  \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>\\conninfo<\/code> \u062f\u0633\u062a\u0648\u0631 \u062f\u0631 \u067e\u0648\u0633\u062a\u0647 psql.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">from<\/span> <span class=\"nn\">flask<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Flask<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">flask_sqlalchemy<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">SQLAlchemy<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">flask_migrate<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Migrate<\/span>\n\n<span class=\"kn\">from<\/span> <span class=\"nn\">.config<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">config<\/span>\n\n<span class=\"n\">db<\/span> <span class=\"o\">=<\/span> <span class=\"n\">SQLAlchemy<\/span><span class=\"p\">()<\/span>\n<span class=\"n\">migrate<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Migrate<\/span><span class=\"p\">()<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">create_app<\/span><span class=\"p\">(<\/span><span class=\"n\">config_mode<\/span><span class=\"p\">):<\/span>\n      <span class=\"n\">app<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Flask<\/span><span class=\"p\">(<\/span><span class=\"n\">__name__<\/span><span class=\"p\">)<\/span>\n      <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"n\">from_object<\/span><span class=\"p\">(<\/span><span class=\"n\">config<\/span><span class=\"p\">[<\/span><span class=\"n\">config_mode<\/span><span class=\"p\">])<\/span>\n\n      <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">init_app<\/span><span class=\"p\">(<\/span><span class=\"n\">app<\/span><span class=\"p\">)<\/span>\n      <span class=\"n\">migrate<\/span><span class=\"p\">.<\/span><span class=\"n\">init_app<\/span><span class=\"p\">(<\/span><span class=\"n\">app<\/span><span class=\"p\">,<\/span> <span class=\"n\">db<\/span><span class=\"p\">)<\/span>\n\n      <span class=\"k\">return<\/span> <span class=\"n\">app<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><code>create_app<\/code>  \u062a\u0627\u0628\u0639\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">import<\/span> <span class=\"nn\">os<\/span>\n\n<span class=\"c1\"># App Initialization\n<\/span><span class=\"kn\">from<\/span> <span class=\"nn\">.<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">create_app<\/span> <span class=\"c1\"># from __init__ file\n<\/span><span class=\"n\">app<\/span> <span class=\"o\">=<\/span> <span class=\"n\">create_app<\/span><span class=\"p\">(<\/span><span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">getenv<\/span><span class=\"p\">(<\/span><span class=\"s\">\"CONFIG_MODE\"<\/span><span class=\"p\">))<\/span>\n\n<span class=\"c1\"># Hello World!\n<\/span><span class=\"o\">@<\/span><span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">route<\/span><span class=\"p\">(<\/span><span class=\"s\">\"https:\/\/dev.to\/\"<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">def<\/span> <span class=\"nf\">hello<\/span><span class=\"p\">():<\/span>\n      <span class=\"k\">return<\/span> <span class=\"s\">\"Hello World!\"<\/span>\n\n<span class=\"k\">if<\/span> <span class=\"n\">__name__<\/span> <span class=\"o\">==<\/span> <span class=\"s\">\"__main__\"<\/span><span class=\"p\">:<\/span>\n      <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">run<\/span><span class=\"p\">()<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0635\u0644\u06cc \u0645\u0627 \u0622\u0645\u0627\u062f\u0647 \u06a9\u0627\u0631 \u0627\u0633\u062a!  \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9\u06cc \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0632\u06cc\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0633\u0631\u0648\u0631 \u0631\u0627 \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"c\"># To Run the Server in Terminal<\/span>\nflask run\n\n<span class=\"c\"># To Run the Server with specific host and port<\/span>\n<span class=\"c\"># flask run -h HOSTNAME -p PORTNUMBER<\/span>\nflask run <span class=\"nt\">-h<\/span> 127.0.0.2 <span class=\"nt\">-p<\/span> 5001\n\n<span class=\"c\"># To Run the Server with Automatic Restart When Changes Occur<\/span>\n<span class=\"nv\">FLASK_DEBUG<\/span><span class=\"o\">=<\/span>1 flask run\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0631\u0648\u0631\u06af\u0631 \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 http:\/\/127.0.0.1:5000 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u0646\u062a\u06cc\u062c\u0647 \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f!<\/p>\n<h3><span class=\"ez-toc-section\" id=\"2_%D8%B4%D8%B1%D9%88%D8%B9_%D8%A8%D9%87_%DA%A9%D8%A7%D8%B1_%D8%A8%D8%A7_%D9%81%D8%A7%DB%8C%D9%84_%D9%87%D8%A7%DB%8C_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%87%D8%A7\"><\/span>\n<p>  #2 \u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u0627\u0631 \u0628\u0627 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062a\u0645\u0627\u0645 \u062f\u0631\u062f\u0647\u0627 \u0648 \u0633\u0631\u062f\u0631\u062f\u0647\u0627\u06cc \u0628\u0627\u0644\u0627 \u0628\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u0634\u0631\u0648\u0639 \u067e\u0631\u0648\u0698\u0647 \u0627\u0633\u062a.  \u0627\u06a9\u062b\u0631 \u06a9\u062f\u0647\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0646\u0648\u0634\u062a\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<blockquote>\n<p>\ud83d\udca1 <em>\u0646\u06a9\u062a\u0647: \u0628\u0647\u062a\u0631\u06cc\u0646 \u062a\u0645\u0631\u06cc\u0646 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0647\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/em><\/p>\n<\/blockquote>\n<p>\u0647\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f <strong>\u0645\u062f\u0644 \u0647\u0627<\/strong>\u060c <strong>\u0622\u062f\u0631\u0633 \u0647\u0627\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc<\/strong>\u060c \u0648 <strong>\u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0647\u0627<\/strong>.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0627 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 \u0646\u0627\u0645 Accounts \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">mkdir <\/span>accounts <span class=\"o\">&amp;&amp;<\/span> <span class=\"nb\">touch<\/span> <span class=\"nv\">$_<\/span>\/models.py <span class=\"nv\">$_<\/span>\/urls.py <span class=\"nv\">$_<\/span>\/controllers.py\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0647\u0645\u0647 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0631\u0627 \u062a\u062c\u0632\u06cc\u0647 \u06a9\u0646\u06cc\u0645:<\/p>\n<blockquote>\n<p>\ud83d\udca1 <em>\u0646\u06a9\u062a\u0647: \u0647\u0645\u06cc\u0634\u0647 \u0628\u0627 \u0633\u0627\u062e\u062a \u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc \u0645\u062f\u0644 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f<\/em><\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">from<\/span> <span class=\"nn\">sqlalchemy<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">inspect<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">datetime<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">datetime<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">flask_validator<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">ValidateEmail<\/span><span class=\"p\">,<\/span> <span class=\"n\">ValidateString<\/span><span class=\"p\">,<\/span> <span class=\"n\">ValidateCountry<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">sqlalchemy.orm<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">validates<\/span>\n\n<span class=\"kn\">from<\/span> <span class=\"nn\">..<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">db<\/span> <span class=\"c1\"># from __init__.py\n<\/span>\n<span class=\"c1\"># ----------------------------------------------- #\n<\/span>\n<span class=\"c1\"># SQL Datatype Objects =&gt; https:\/\/docs.sqlalchemy.org\/en\/14\/core\/types.html\n<\/span><span class=\"k\">class<\/span> <span class=\"nc\">Account<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Model<\/span><span class=\"p\">):<\/span>\n<span class=\"c1\"># Auto Generated Fields:\n<\/span>      <span class=\"nb\">id<\/span>           <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">(<\/span><span class=\"mi\">50<\/span><span class=\"p\">),<\/span> <span class=\"n\">primary_key<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"n\">nullable<\/span><span class=\"o\">=<\/span><span class=\"bp\">False<\/span><span class=\"p\">,<\/span> <span class=\"n\">unique<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>\n      <span class=\"n\">created<\/span>      <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">DateTime<\/span><span class=\"p\">(<\/span><span class=\"n\">timezone<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">),<\/span> <span class=\"n\">default<\/span><span class=\"o\">=<\/span><span class=\"n\">datetime<\/span><span class=\"p\">.<\/span><span class=\"n\">now<\/span><span class=\"p\">)<\/span>                           <span class=\"c1\"># The Date of the Instance Creation =&gt; Created one Time when Instantiation\n<\/span>      <span class=\"n\">updated<\/span>      <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">DateTime<\/span><span class=\"p\">(<\/span><span class=\"n\">timezone<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">),<\/span> <span class=\"n\">default<\/span><span class=\"o\">=<\/span><span class=\"n\">datetime<\/span><span class=\"p\">.<\/span><span class=\"n\">now<\/span><span class=\"p\">,<\/span> <span class=\"n\">onupdate<\/span><span class=\"o\">=<\/span><span class=\"n\">datetime<\/span><span class=\"p\">.<\/span><span class=\"n\">now<\/span><span class=\"p\">)<\/span>    <span class=\"c1\"># The Date of the Instance Update =&gt; Changed with Every Update\n<\/span>\n<span class=\"c1\"># Input by User Fields:\n<\/span>      <span class=\"n\">email<\/span>        <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">(<\/span><span class=\"mi\">100<\/span><span class=\"p\">),<\/span> <span class=\"n\">nullable<\/span><span class=\"o\">=<\/span><span class=\"bp\">False<\/span><span class=\"p\">,<\/span> <span class=\"n\">unique<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>\n      <span class=\"n\">username<\/span>     <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">(<\/span><span class=\"mi\">100<\/span><span class=\"p\">),<\/span> <span class=\"n\">nullable<\/span><span class=\"o\">=<\/span><span class=\"bp\">False<\/span><span class=\"p\">)<\/span>\n      <span class=\"n\">dob<\/span>          <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Date<\/span><span class=\"p\">)<\/span>\n      <span class=\"n\">country<\/span>      <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">(<\/span><span class=\"mi\">100<\/span><span class=\"p\">))<\/span>\n      <span class=\"n\">phone_number<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">(<\/span><span class=\"mi\">20<\/span><span class=\"p\">))<\/span>\n\n<span class=\"c1\"># Validations =&gt; https:\/\/flask-validator.readthedocs.io\/en\/latest\/index.html\n<\/span>      <span class=\"o\">@<\/span><span class=\"nb\">classmethod<\/span>\n      <span class=\"k\">def<\/span> <span class=\"nf\">__declare_last__<\/span><span class=\"p\">(<\/span><span class=\"n\">cls<\/span><span class=\"p\">):<\/span>\n          <span class=\"n\">ValidateEmail<\/span><span class=\"p\">(<\/span><span class=\"n\">Account<\/span><span class=\"p\">.<\/span><span class=\"n\">email<\/span><span class=\"p\">,<\/span> <span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"The email is not valid. Please check it\"<\/span><span class=\"p\">)<\/span> <span class=\"c1\"># True =&gt; Allow internationalized addresses, True =&gt; Check domain name resolution.\n<\/span>          <span class=\"n\">ValidateString<\/span><span class=\"p\">(<\/span><span class=\"n\">Account<\/span><span class=\"p\">.<\/span><span class=\"n\">username<\/span><span class=\"p\">,<\/span> <span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"The username type must be string\"<\/span><span class=\"p\">)<\/span>\n          <span class=\"n\">ValidateCountry<\/span><span class=\"p\">(<\/span><span class=\"n\">Account<\/span><span class=\"p\">.<\/span><span class=\"n\">country<\/span><span class=\"p\">,<\/span> <span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"The country is not valid\"<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Set an empty string to null for username field =&gt; https:\/\/stackoverflow.com\/a\/57294872\n<\/span>      <span class=\"o\">@<\/span><span class=\"n\">validates<\/span><span class=\"p\">(<\/span><span class=\"s\">'username'<\/span><span class=\"p\">)<\/span>\n      <span class=\"k\">def<\/span> <span class=\"nf\">empty_string_to_null<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">key<\/span><span class=\"p\">,<\/span> <span class=\"n\">value<\/span><span class=\"p\">):<\/span>\n          <span class=\"k\">if<\/span> <span class=\"nb\">isinstance<\/span><span class=\"p\">(<\/span><span class=\"n\">value<\/span><span class=\"p\">,<\/span> <span class=\"nb\">str<\/span><span class=\"p\">)<\/span> <span class=\"ow\">and<\/span> <span class=\"n\">value<\/span> <span class=\"o\">==<\/span> <span class=\"s\">''<\/span><span class=\"p\">:<\/span> <span class=\"k\">return<\/span> <span class=\"bp\">None<\/span>\n          <span class=\"k\">else<\/span><span class=\"p\">:<\/span> <span class=\"k\">return<\/span> <span class=\"n\">value<\/span>\n\n<span class=\"c1\"># How to serialize SqlAlchemy PostgreSQL Query to JSON =&gt; https:\/\/stackoverflow.com\/a\/46180522\n<\/span>      <span class=\"k\">def<\/span> <span class=\"nf\">toDict<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\n          <span class=\"k\">return<\/span> <span class=\"p\">{<\/span> <span class=\"n\">c<\/span><span class=\"p\">.<\/span><span class=\"n\">key<\/span><span class=\"p\">:<\/span> <span class=\"nb\">getattr<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">c<\/span><span class=\"p\">.<\/span><span class=\"n\">key<\/span><span class=\"p\">)<\/span> <span class=\"k\">for<\/span> <span class=\"n\">c<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">inspect<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">).<\/span><span class=\"n\">mapper<\/span><span class=\"p\">.<\/span><span class=\"n\">column_attrs<\/span> <span class=\"p\">}<\/span>\n\n      <span class=\"k\">def<\/span> <span class=\"nf\">__repr__<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\n          <span class=\"k\">return<\/span> <span class=\"s\">\"&lt;%r&gt;\"<\/span> <span class=\"o\">%<\/span> <span class=\"bp\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">email<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u06a9\u0644\u06cc CRUD \u0639\u0628\u0627\u0631\u062a\u0646\u062f \u0627\u0632:<\/p>\n<ul>\n<li>\u0644\u06cc\u0633\u062a \u0647\u0645\u0647 \u0645\u0648\u0627\u0631\u062f<\/li>\n<li>\u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u062c\u062f\u06cc\u062f \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f<\/li>\n<li>\u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u062e\u0627\u0635 \u0628\u06af\u06cc\u0631\u06cc\u062f<\/li>\n<li>\u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u062e\u0627\u0635 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f<\/li>\n<li>\u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u062e\u0627\u0635 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f<\/li>\n<\/ul>\n<p>\u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u0627\u06cc\u0646 \u0639\u0645\u0644\u06cc\u0627\u062a \u0628\u0627\u06cc\u062f \u0639\u0645\u0644\u06a9\u0631\u062f \u0645\u0646\u0637\u0642\u06cc \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 <code>controllers.py<\/code> \u0641\u0627\u06cc\u0644:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">from<\/span> <span class=\"nn\">flask<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">request<\/span><span class=\"p\">,<\/span> <span class=\"n\">jsonify<\/span>\n<span class=\"kn\">import<\/span> <span class=\"nn\">uuid<\/span>\n\n<span class=\"kn\">from<\/span> <span class=\"nn\">..<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">db<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">.models<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Account<\/span>\n\n<span class=\"c1\"># ----------------------------------------------- #\n<\/span>\n<span class=\"c1\"># Query Object Methods =&gt; https:\/\/docs.sqlalchemy.org\/en\/14\/orm\/query.html#sqlalchemy.orm.Query\n# Session Object Methods =&gt; https:\/\/docs.sqlalchemy.org\/en\/14\/orm\/session_api.html#sqlalchemy.orm.Session\n# How to serialize SqlAlchemy PostgreSQL Query to JSON =&gt; https:\/\/stackoverflow.com\/a\/46180522\n<\/span>\n<span class=\"k\">def<\/span> <span class=\"nf\">list_all_accounts_controller<\/span><span class=\"p\">():<\/span>\n      <span class=\"n\">accounts<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Account<\/span><span class=\"p\">.<\/span><span class=\"n\">query<\/span><span class=\"p\">.<\/span><span class=\"nb\">all<\/span><span class=\"p\">()<\/span>\n      <span class=\"n\">response<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\n      <span class=\"k\">for<\/span> <span class=\"n\">account<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">accounts<\/span><span class=\"p\">:<\/span> <span class=\"n\">response<\/span><span class=\"p\">.<\/span><span class=\"n\">append<\/span><span class=\"p\">(<\/span><span class=\"n\">account<\/span><span class=\"p\">.<\/span><span class=\"n\">toDict<\/span><span class=\"p\">())<\/span>\n      <span class=\"k\">return<\/span> <span class=\"n\">jsonify<\/span><span class=\"p\">(<\/span><span class=\"n\">response<\/span><span class=\"p\">)<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">create_account_controller<\/span><span class=\"p\">():<\/span>\n      <span class=\"n\">request_form<\/span> <span class=\"o\">=<\/span> <span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"n\">form<\/span><span class=\"p\">.<\/span><span class=\"n\">to_dict<\/span><span class=\"p\">()<\/span>\n\n      <span class=\"nb\">id<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">str<\/span><span class=\"p\">(<\/span><span class=\"n\">uuid<\/span><span class=\"p\">.<\/span><span class=\"n\">uuid4<\/span><span class=\"p\">())<\/span>\n      <span class=\"n\">new_account<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Account<\/span><span class=\"p\">(<\/span>\n                            <span class=\"nb\">id<\/span>             <span class=\"o\">=<\/span> <span class=\"nb\">id<\/span><span class=\"p\">,<\/span>\n                            <span class=\"n\">email<\/span>          <span class=\"o\">=<\/span> <span class=\"n\">request_form<\/span><span class=\"p\">[<\/span><span class=\"s\">'email'<\/span><span class=\"p\">],<\/span>\n                            <span class=\"n\">username<\/span>       <span class=\"o\">=<\/span> <span class=\"n\">request_form<\/span><span class=\"p\">[<\/span><span class=\"s\">'username'<\/span><span class=\"p\">],<\/span>\n                            <span class=\"n\">dob<\/span>            <span class=\"o\">=<\/span> <span class=\"n\">request_form<\/span><span class=\"p\">[<\/span><span class=\"s\">'dob'<\/span><span class=\"p\">],<\/span>\n                            <span class=\"n\">country<\/span>        <span class=\"o\">=<\/span> <span class=\"n\">request_form<\/span><span class=\"p\">[<\/span><span class=\"s\">'country'<\/span><span class=\"p\">],<\/span>\n                            <span class=\"n\">phone_number<\/span>   <span class=\"o\">=<\/span> <span class=\"n\">request_form<\/span><span class=\"p\">[<\/span><span class=\"s\">'phone_number'<\/span><span class=\"p\">],<\/span>\n                            <span class=\"p\">)<\/span>\n      <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">session<\/span><span class=\"p\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">new_account<\/span><span class=\"p\">)<\/span>\n      <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">session<\/span><span class=\"p\">.<\/span><span class=\"n\">commit<\/span><span class=\"p\">()<\/span>\n\n      <span class=\"n\">response<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Account<\/span><span class=\"p\">.<\/span><span class=\"n\">query<\/span><span class=\"p\">.<\/span><span class=\"n\">get<\/span><span class=\"p\">(<\/span><span class=\"nb\">id<\/span><span class=\"p\">).<\/span><span class=\"n\">toDict<\/span><span class=\"p\">()<\/span>\n      <span class=\"k\">return<\/span> <span class=\"n\">jsonify<\/span><span class=\"p\">(<\/span><span class=\"n\">response<\/span><span class=\"p\">)<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">retrieve_account_controller<\/span><span class=\"p\">(<\/span><span class=\"n\">account_id<\/span><span class=\"p\">):<\/span>\n      <span class=\"n\">response<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Account<\/span><span class=\"p\">.<\/span><span class=\"n\">query<\/span><span class=\"p\">.<\/span><span class=\"n\">get<\/span><span class=\"p\">(<\/span><span class=\"n\">account_id<\/span><span class=\"p\">).<\/span><span class=\"n\">toDict<\/span><span class=\"p\">()<\/span>\n      <span class=\"k\">return<\/span> <span class=\"n\">jsonify<\/span><span class=\"p\">(<\/span><span class=\"n\">response<\/span><span class=\"p\">)<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">update_account_controller<\/span><span class=\"p\">(<\/span><span class=\"n\">account_id<\/span><span class=\"p\">):<\/span>\n      <span class=\"n\">request_form<\/span> <span class=\"o\">=<\/span> <span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"n\">form<\/span><span class=\"p\">.<\/span><span class=\"n\">to_dict<\/span><span class=\"p\">()<\/span>\n      <span class=\"n\">account<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Account<\/span><span class=\"p\">.<\/span><span class=\"n\">query<\/span><span class=\"p\">.<\/span><span class=\"n\">get<\/span><span class=\"p\">(<\/span><span class=\"n\">account_id<\/span><span class=\"p\">)<\/span>\n\n      <span class=\"n\">account<\/span><span class=\"p\">.<\/span><span class=\"n\">email<\/span>        <span class=\"o\">=<\/span> <span class=\"n\">request_form<\/span><span class=\"p\">[<\/span><span class=\"s\">'email'<\/span><span class=\"p\">]<\/span>\n      <span class=\"n\">account<\/span><span class=\"p\">.<\/span><span class=\"n\">username<\/span>     <span class=\"o\">=<\/span> <span class=\"n\">request_form<\/span><span class=\"p\">[<\/span><span class=\"s\">'username'<\/span><span class=\"p\">]<\/span>\n      <span class=\"n\">account<\/span><span class=\"p\">.<\/span><span class=\"n\">dob<\/span>          <span class=\"o\">=<\/span> <span class=\"n\">request_form<\/span><span class=\"p\">[<\/span><span class=\"s\">'dob'<\/span><span class=\"p\">]<\/span>\n      <span class=\"n\">account<\/span><span class=\"p\">.<\/span><span class=\"n\">country<\/span>      <span class=\"o\">=<\/span> <span class=\"n\">request_form<\/span><span class=\"p\">[<\/span><span class=\"s\">'country'<\/span><span class=\"p\">]<\/span>\n      <span class=\"n\">account<\/span><span class=\"p\">.<\/span><span class=\"n\">phone_number<\/span> <span class=\"o\">=<\/span> <span class=\"n\">request_form<\/span><span class=\"p\">[<\/span><span class=\"s\">'phone_number'<\/span><span class=\"p\">]<\/span>\n      <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">session<\/span><span class=\"p\">.<\/span><span class=\"n\">commit<\/span><span class=\"p\">()<\/span>\n\n      <span class=\"n\">response<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Account<\/span><span class=\"p\">.<\/span><span class=\"n\">query<\/span><span class=\"p\">.<\/span><span class=\"n\">get<\/span><span class=\"p\">(<\/span><span class=\"n\">account_id<\/span><span class=\"p\">).<\/span><span class=\"n\">toDict<\/span><span class=\"p\">()<\/span>\n      <span class=\"k\">return<\/span> <span class=\"n\">jsonify<\/span><span class=\"p\">(<\/span><span class=\"n\">response<\/span><span class=\"p\">)<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">delete_account_controller<\/span><span class=\"p\">(<\/span><span class=\"n\">account_id<\/span><span class=\"p\">):<\/span>\n      <span class=\"n\">Account<\/span><span class=\"p\">.<\/span><span class=\"n\">query<\/span><span class=\"p\">.<\/span><span class=\"n\">filter_by<\/span><span class=\"p\">(<\/span><span class=\"nb\">id<\/span><span class=\"o\">=<\/span><span class=\"n\">account_id<\/span><span class=\"p\">).<\/span><span class=\"n\">delete<\/span><span class=\"p\">()<\/span>\n      <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">session<\/span><span class=\"p\">.<\/span><span class=\"n\">commit<\/span><span class=\"p\">()<\/span>\n\n      <span class=\"k\">return<\/span> <span class=\"p\">(<\/span><span class=\"s\">'Account with Id \"{}\" deleted successfully!'<\/span><span class=\"p\">).<\/span><span class=\"nb\">format<\/span><span class=\"p\">(<\/span><span class=\"n\">account_id<\/span><span class=\"p\">)<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u062a\u0648\u0627\u0628\u0639 \u0645\u0646\u0637\u0642\u06cc \u0628\u0631\u0627\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a CRUD \u0631\u0627 \u062a\u062c\u0632\u06cc\u0647 \u06a9\u0646\u06cc\u0645:<\/p>\n<ol>\n<li>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062a\u0645\u0627\u0645 \u067e\u0631\u0633 \u0648 \u062c\u0648\u0647\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f <strong>query.all()<\/strong> \u0631\u0648\u0634<\/li>\n<li>\u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627 \u062f\u0631 \u0641\u0647\u0631\u0633\u062a\u06cc \u0627\u0632 \u0641\u0631\u0647\u0646\u06af \u0644\u063a\u062a\u060c \u0646\u062a\u06cc\u062c\u0647 \u0631\u0627 \u062d\u0644\u0642\u0647 \u0628\u0632\u0646\u06cc\u062f<\/li>\n<li>\u0644\u06cc\u0633\u062a \u0631\u0627 Jsonify \u06a9\u0646\u06cc\u062f<\/li>\n<\/ol>\n<ol>\n<li>\u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u062f\u0631 \u0641\u0631\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0647 \u0641\u0631\u0647\u0646\u06af \u0644\u063a\u062a \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u06cc\u062f<\/li>\n<li>\u06cc\u06a9 \u0634\u0646\u0627\u0633\u0647 \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 uuid \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f => https:\/\/docs.python.org\/3\/library\/uuid.html\n<\/li>\n<li>\u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u062c\u062f\u06cc\u062f \u0627\u0632 \u06a9\u0644\u0627\u0633 \u0628\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0641\u0631\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/li>\n<li>\u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0646\u0645\u0648\u0646\u0647 \u062c\u062f\u06cc\u062f \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u060c \u062c\u0644\u0633\u0647 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0633\u067e\u0633 Commit \u06a9\u0646\u06cc\u062f<\/li>\n<li>\u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0646\u0645\u0648\u0646\u0647 \u062c\u062f\u06cc\u062f \u062a\u0648\u0633\u0637 <strong>\u0634\u0646\u0627\u0633\u0647<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0643\u0631\u062f\u0646 <strong>query.get()<\/strong> \u0631\u0648\u0634<\/li>\n<li>\u0646\u062a\u06cc\u062c\u0647 \u0631\u0627 \u0628\u0647 \u062f\u06cc\u06a9\u0634\u0646\u0631\u06cc \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u06cc\u062f \u0633\u067e\u0633 \u0622\u0646 \u0631\u0627 Jsonify \u06a9\u0646\u06cc\u062f<\/li>\n<\/ol>\n<ol>\n<li>\u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0646\u0645\u0648\u0646\u0647 \u062a\u0648\u0633\u0637 <strong>\u0634\u0646\u0627\u0633\u0647 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0643\u0631\u062f\u0646 <strong>query.get()<\/strong> \u0631\u0648\u0634<\/li>\n<li>\u0646\u062a\u06cc\u062c\u0647 \u0631\u0627 \u0628\u0647 \u062f\u06cc\u06a9\u0634\u0646\u0631\u06cc \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u06cc\u062f \u0633\u067e\u0633 \u0622\u0646 \u0631\u0627 Jsonify \u06a9\u0646\u06cc\u062f<\/li>\n<\/ol>\n<ol>\n<li>\u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u062f\u0631 \u0641\u0631\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0647 \u0641\u0631\u0647\u0646\u06af \u0644\u063a\u062a \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u06cc\u062f<\/li>\n<li>\u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0646\u0645\u0648\u0646\u0647 \u062a\u0648\u0633\u0637 <strong>\u0634\u0646\u0627\u0633\u0647 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0643\u0631\u062f\u0646 <strong>query.get()<\/strong> \u0631\u0648\u0634<\/li>\n<li>\u0641\u06cc\u0644\u062f\u0647\u0627\u06cc \u0646\u0645\u0648\u0646\u0647 \u0631\u0627 \u0628\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0641\u0631\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f<\/li>\n<li>\u062c\u0644\u0633\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0646\u0645\u0648\u0646\u0647 \u0628\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u0627 \u0645\u062a\u0639\u0647\u062f \u06a9\u0646\u06cc\u062f<\/li>\n<li>\u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0646\u0645\u0648\u0646\u0647 \u062a\u0648\u0633\u0637 <strong>\u0634\u0646\u0627\u0633\u0647 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0643\u0631\u062f\u0646 <strong>query.get()<\/strong> \u0631\u0648\u0634<\/li>\n<li>\u0646\u062a\u06cc\u062c\u0647 \u0631\u0627 \u0628\u0647 \u062f\u06cc\u06a9\u0634\u0646\u0631\u06cc \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u06cc\u062f \u0633\u067e\u0633 \u0622\u0646 \u0631\u0627 Jsonify \u06a9\u0646\u06cc\u062f<\/li>\n<\/ol>\n<ul>\n<li>\n<strong>\u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u062e\u0627\u0635 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f<\/strong>:<\/li>\n<\/ul>\n<ol>\n<li>\u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0646\u0645\u0648\u0646\u0647 \u062a\u0648\u0633\u0637 <strong>\u0634\u0646\u0627\u0633\u0647 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0643\u0631\u062f\u0646 <strong>query.filter_by()<\/strong> \u0631\u0648\u0634<\/li>\n<li>\u062c\u0644\u0633\u0647 \u0631\u0627 \u0645\u062a\u0639\u0647\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u0627 \u0627\u0642\u062f\u0627\u0645\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f<\/li>\n<li>\u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0627 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u0646\u062a\u06cc\u062c\u0647<\/li>\n<\/ol>\n<p>\u067e\u0646\u062c \u0639\u0645\u0644\u06cc\u0627\u062a \u06a9\u0644\u06cc \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 \u062f\u0648 URL \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646 \u062a\u0631\u06a9\u06cc\u0628 \u06a9\u0631\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">from<\/span> <span class=\"nn\">flask<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">request<\/span>\n\n<span class=\"kn\">from<\/span> <span class=\"nn\">..app<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">app<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">.controllers<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">list_all_accounts_controller<\/span><span class=\"p\">,<\/span> <span class=\"n\">create_account_controller<\/span><span class=\"p\">,<\/span> <span class=\"n\">retrieve_account_controller<\/span><span class=\"p\">,<\/span> <span class=\"n\">update_account_controller<\/span><span class=\"p\">,<\/span> <span class=\"n\">delete_account_controller<\/span>\n\n<span class=\"o\">@<\/span><span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">route<\/span><span class=\"p\">(<\/span><span class=\"s\">\"\/accounts\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">methods<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"s\">'GET'<\/span><span class=\"p\">,<\/span> <span class=\"s\">'POST'<\/span><span class=\"p\">])<\/span>\n<span class=\"k\">def<\/span> <span class=\"nf\">list_create_accounts<\/span><span class=\"p\">():<\/span>\n      <span class=\"k\">if<\/span> <span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"n\">method<\/span> <span class=\"o\">==<\/span> <span class=\"s\">'GET'<\/span><span class=\"p\">:<\/span> <span class=\"k\">return<\/span> <span class=\"n\">list_all_accounts_controller<\/span><span class=\"p\">()<\/span>\n      <span class=\"k\">if<\/span> <span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"n\">method<\/span> <span class=\"o\">==<\/span> <span class=\"s\">'POST'<\/span><span class=\"p\">:<\/span> <span class=\"k\">return<\/span> <span class=\"n\">create_account_controller<\/span><span class=\"p\">()<\/span>\n      <span class=\"k\">else<\/span><span class=\"p\">:<\/span> <span class=\"k\">return<\/span> <span class=\"s\">'Method is Not Allowed'<\/span>\n\n<span class=\"o\">@<\/span><span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">route<\/span><span class=\"p\">(<\/span><span class=\"s\">\"\/accounts\/&lt;account_id&gt;\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">methods<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"s\">'GET'<\/span><span class=\"p\">,<\/span> <span class=\"s\">'PUT'<\/span><span class=\"p\">,<\/span> <span class=\"s\">'DELETE'<\/span><span class=\"p\">])<\/span>\n<span class=\"k\">def<\/span> <span class=\"nf\">retrieve_update_destroy_accounts<\/span><span class=\"p\">(<\/span><span class=\"n\">account_id<\/span><span class=\"p\">):<\/span>\n      <span class=\"k\">if<\/span> <span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"n\">method<\/span> <span class=\"o\">==<\/span> <span class=\"s\">'GET'<\/span><span class=\"p\">:<\/span> <span class=\"k\">return<\/span> <span class=\"n\">retrieve_account_controller<\/span><span class=\"p\">(<\/span><span class=\"n\">account_id<\/span><span class=\"p\">)<\/span>\n      <span class=\"k\">if<\/span> <span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"n\">method<\/span> <span class=\"o\">==<\/span> <span class=\"s\">'PUT'<\/span><span class=\"p\">:<\/span> <span class=\"k\">return<\/span> <span class=\"n\">update_account_controller<\/span><span class=\"p\">(<\/span><span class=\"n\">account_id<\/span><span class=\"p\">)<\/span>\n      <span class=\"k\">if<\/span> <span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"n\">method<\/span> <span class=\"o\">==<\/span> <span class=\"s\">'DELETE'<\/span><span class=\"p\">:<\/span> <span class=\"k\">return<\/span> <span class=\"n\">delete_account_controller<\/span><span class=\"p\">(<\/span><span class=\"n\">account_id<\/span><span class=\"p\">)<\/span>\n      <span class=\"k\">else<\/span><span class=\"p\">:<\/span> <span class=\"k\">return<\/span> <span class=\"s\">'Method is Not Allowed'<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646\u060c \u062f\u0648 \u0645\u0631\u062d\u0644\u0647 \u0628\u0631\u0627\u06cc \u0622\u0645\u0627\u062f\u0647 \u06a9\u0631\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u062d\u0633\u0627\u0628\u200c\u0647\u0627\u06cc \u0645\u0627 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a:<\/p>\n<p>1- \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f <code>urls<\/code> \u0641\u0627\u06cc\u0644 \u062f\u0631 <code>app.py<\/code><\/p>\n<p>\u0634\u06a9\u0644 \u0646\u0647\u0627\u06cc\u06cc \u0627\u0632 <code>app.py<\/code> \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">import<\/span> <span class=\"nn\">os<\/span>\n\n<span class=\"c1\"># App Initialization\n<\/span><span class=\"kn\">from<\/span> <span class=\"nn\">.<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">create_app<\/span> <span class=\"c1\"># from __init__ file\n<\/span><span class=\"n\">app<\/span> <span class=\"o\">=<\/span> <span class=\"n\">create_app<\/span><span class=\"p\">(<\/span><span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">getenv<\/span><span class=\"p\">(<\/span><span class=\"s\">\"CONFIG_MODE\"<\/span><span class=\"p\">))<\/span>\n\n<span class=\"c1\"># ----------------------------------------------- #\n<\/span>\n<span class=\"c1\"># Hello World!\n<\/span><span class=\"o\">@<\/span><span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">route<\/span><span class=\"p\">(<\/span><span class=\"s\">\"https:\/\/dev.to\/\"<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">def<\/span> <span class=\"nf\">hello<\/span><span class=\"p\">():<\/span>\n       <span class=\"k\">return<\/span> <span class=\"s\">\"Hello World!\"<\/span>\n\n<span class=\"c1\"># Applications Routes\n<\/span><span class=\"kn\">from<\/span> <span class=\"nn\">.accounts<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">urls<\/span>\n\n<span class=\"c1\"># ----------------------------------------------- #\n<\/span>\n<span class=\"k\">if<\/span> <span class=\"n\">__name__<\/span> <span class=\"o\">==<\/span> <span class=\"s\">\"__main__\"<\/span><span class=\"p\">:<\/span>\n       <span class=\"c1\"># To Run the Server in Terminal =&gt; flask run -h localhost -p 5000\n<\/span>       <span class=\"c1\"># To Run the Server with Automatic Restart When Changes Occurred =&gt; FLASK_DEBUG=1 flask run -h localhost -p 5000\n<\/span>\n       <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">run<\/span><span class=\"p\">()<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>2- \u0645\u062f\u0644 \u0647\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062c\u062f\u06cc\u062f \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0645\u0647\u0627\u062c\u0631\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>flask db init\nflask db migrate\nflask db upgrade\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06af\u0631 \u0628\u0627 \u0627\u06cc\u0646 \u062e\u0637\u0627 \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u06cc\u062f: AttributeError: <code>'_FakeStack'<\/code> \u0634\u06cc\u0621 \u0647\u06cc\u0686 \u0648\u06cc\u0698\u06af\u06cc \u0646\u062f\u0627\u0631\u062f <code>'__ident_func__'<\/code>\u060c \u0633\u067e\u0633 \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0622\u0646 \u0631\u0627 \u0628\u0631\u0637\u0631\u0641 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>python <span class=\"nt\">-m<\/span> pip uninstall flask-sqlalchemy\npython <span class=\"nt\">-m<\/span> pip <span class=\"nb\">install <\/span>flask-sqlalchemy\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631\u0628\u0627\u0631\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Flask-Migrate \u0627\u0632 https:\/\/flask-migrate.readthedocs.io\/en\/latest \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u06a9\u0633\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B4%D9%85%D8%A7%D8%B1%D9%87_3_%D8%A7%D8%B1%D8%B3%D8%A7%D9%84_%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA_%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Postman\"><\/span>\n<p>  \u0634\u0645\u0627\u0631\u0647 3 \u0627\u0631\u0633\u0627\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Postman<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634\u060c \u0645\u0627 \u0627\u0632 Postman \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u062a\u0645\u0627\u0645 \u0639\u0645\u0644\u06cc\u0627\u062a CRUD \u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<p><strong>\u067e\u0633\u062a\u0686\u06cc \u0686\u06cc\u0633\u062a\u061f<\/strong><\/p>\n<blockquote>\n<p>Postman \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u062a\u0633\u062a API \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645.  \u0645\u0627\u0646\u0646\u062f \u0645\u0631\u0648\u0631\u06af\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 HTML \u0631\u0627 \u0631\u0646\u062f\u0631 \u0646\u0645\u06cc \u06a9\u0646\u062f.  \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631\u060c \u0641\u0642\u0637 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc GET HTTP \u0631\u0627 \u0628\u0632\u0646\u06cc\u0645\u060c \u0627\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 GET\u060c POST\u060c PUT\u060c DELETE \u0648 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc HTTP \u062f\u06cc\u06af\u0631 \u0631\u0627 \u062f\u0631 API \u0628\u0632\u0646\u06cc\u0645.<\/p>\n<p>Postman \u0628\u0632\u0631\u06af\u062a\u0631\u06cc\u0646 \u0645\u0631\u06a9\u0632 API \u0639\u0645\u0648\u0645\u06cc \u062c\u0647\u0627\u0646 \u0627\u0633\u062a.  \u0627\u06cc\u0646 \u06cc\u06a9 \u067e\u0644\u062a \u0641\u0631\u0645 API \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f API \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0637\u0631\u0627\u062d\u06cc\u060c \u0633\u0627\u062e\u062a\u060c \u0622\u0632\u0645\u0627\u06cc\u0634 \u0648 \u062a\u06a9\u0631\u0627\u0631 \u06a9\u0646\u0646\u062f.<\/p>\n<\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/\u0646\u062d\u0648\u0647-\u0633\u0627\u062e\u062a-CRUD-API-\u0628\u0627-\u0627\u0633\u062a\u0641\u0627\u062f\u0647-\u0627\u0632-Python-Flask-\u0648.jpg\" alt=\"\u0627\u0631\u0633\u0627\u0644 \u0627\u06a9\u0627\u0646\u062a \u062c\u062f\u06cc\u062f\" loading=\"lazy\" width=\"880\" height=\"530\" title=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677590021_825_\u0646\u062d\u0648\u0647-\u0633\u0627\u062e\u062a-CRUD-API-\u0628\u0627-\u0627\u0633\u062a\u0641\u0627\u062f\u0647-\u0627\u0632-Python-Flask-\u0648.jpg\" alt=\"\u0644\u06cc\u0633\u062a \u0647\u0645\u0647 \u062d\u0633\u0627\u0628 \u0647\u0627\" loading=\"lazy\" width=\"880\" height=\"524\" title=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677590021_59_\u0646\u062d\u0648\u0647-\u0633\u0627\u062e\u062a-CRUD-API-\u0628\u0627-\u0627\u0633\u062a\u0641\u0627\u062f\u0647-\u0627\u0632-Python-Flask-\u0648.jpg\" alt=\"\u06cc\u06a9 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062e\u0627\u0635 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f\" loading=\"lazy\" width=\"880\" height=\"530\" title=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677590021_947_\u0646\u062d\u0648\u0647-\u0633\u0627\u062e\u062a-CRUD-API-\u0628\u0627-\u0627\u0633\u062a\u0641\u0627\u062f\u0647-\u0627\u0632-Python-Flask-\u0648.jpg\" alt=\"\u06cc\u06a9 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062e\u0627\u0635 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f\" loading=\"lazy\" width=\"880\" height=\"520\" title=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677590022_155_\u0646\u062d\u0648\u0647-\u0633\u0627\u062e\u062a-CRUD-API-\u0628\u0627-\u0627\u0633\u062a\u0641\u0627\u062f\u0647-\u0627\u0632-Python-Flask-\u0648.jpg\" alt=\"\u062d\u0630\u0641 \u06cc\u06a9 \u062d\u0633\u0627\u0628 \u062e\u0627\u0635\" loading=\"lazy\" width=\"880\" height=\"518\" title=\"\"><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D8%A7_SQLAlchemy_Basic_Relationships_%D8%B4%D8%B1%D9%88%D8%B9_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0628\u0627 SQLAlchemy Basic Relationships \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u06af\u0648\u06cc\u06cc\u0645 \u06a9\u0647 \u0645\u0627 \u0686\u0646\u062f\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627\u0646\u0646\u062f <strong>\u062d\u0633\u0627\u0628 \u0647\u0627<\/strong> &#038; <strong>\u0645\u0648\u0627\u0631\u062f<\/strong> \u0648 \u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u06cc\u0646 \u0645\u062f\u0644 \u0647\u0627\u06cc \u0622\u0646\u0647\u0627 \u0631\u0627\u0628\u0637\u0647 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u06cc\u0645!<\/p>\n<blockquote>\n<p>\ud83d\udcdd <em>\u062a\u0648\u062c\u0647: \u0627\u06cc\u0646 \u06cc\u06a9 \u062e\u0644\u0627\u0635\u0647 \u06a9\u0648\u062a\u0627\u0647 \u0627\u0632 \u0631\u0648\u0627\u0628\u0637 \u0645\u062f\u0644 \u0627\u0633\u062a\u060c \u0645\u0627 \u062f\u0631 \u0645\u0642\u0627\u0644\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a CRUD \u0622\u0646\u0647\u0627 \u062e\u0648\u0627\u0647\u06cc\u0645 \u067e\u0631\u062f\u0627\u062e\u062a!<\/em><\/p>\n<\/blockquote>\n<ol>\n<li><strong>\u0631\u0627\u0628\u0637\u0647 \u06cc\u06a9 \u0628\u0647 \u0686\u0646\u062f<\/strong><\/li>\n<\/ol>\n<p>\u062d\u0633\u0627\u0628 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0627\u0631\u0627\u06cc \u0686\u0646\u062f\u06cc\u0646 \u0622\u06cc\u062a\u0645 \u0628\u0627\u0634\u062f\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0645\u062a\u0639\u0644\u0642 \u0628\u0647 \u06cc\u06a9 \u062d\u0633\u0627\u0628 \u0627\u0633\u062a!<\/p>\n<blockquote>\n<p>\ud83d\udca1 <em>\u0646\u06a9\u062a\u0647: \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <strong><code>ForeignKey<\/code><\/strong>  \u062f\u0631 <strong>\u0632\u06cc\u0627\u062f<\/strong> \u0633\u0645\u062a!<\/em><\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">class<\/span> <span class=\"nc\">Account<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Model<\/span><span class=\"p\">):<\/span>\n     <span class=\"nb\">id<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">(<\/span><span class=\"mi\">50<\/span><span class=\"p\">),<\/span> <span class=\"n\">primary_key<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"n\">nullable<\/span><span class=\"o\">=<\/span><span class=\"bp\">False<\/span><span class=\"p\">,<\/span> <span class=\"n\">unique<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">.<\/span>\n        <span class=\"p\">.<\/span>\n        <span class=\"p\">.<\/span>\n\n<span class=\"c1\"># Relations:\n<\/span>     <span class=\"n\">items<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">relationship<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Item\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">back_populates<\/span><span class=\"o\">=<\/span><span class=\"s\">'account'<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">class<\/span> <span class=\"nc\">Item<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Model<\/span><span class=\"p\">):<\/span>\n     <span class=\"nb\">id<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">(<\/span><span class=\"mi\">50<\/span><span class=\"p\">),<\/span> <span class=\"n\">primary_key<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"n\">nullable<\/span><span class=\"o\">=<\/span><span class=\"bp\">False<\/span><span class=\"p\">,<\/span> <span class=\"n\">unique<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">.<\/span>\n        <span class=\"p\">.<\/span>\n        <span class=\"p\">.<\/span>\n\n<span class=\"c1\"># Relations:\n<\/span>     <span class=\"n\">account_id<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">(<\/span><span class=\"mi\">100<\/span><span class=\"p\">),<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">ForeignKey<\/span><span class=\"p\">(<\/span><span class=\"s\">\"account.id\"<\/span><span class=\"p\">))<\/span>\n     <span class=\"n\">account<\/span>    <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">relationship<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Account\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">back_populates<\/span><span class=\"o\">=<\/span><span class=\"s\">\"items\"<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ol>\n<li><strong>\u0631\u0627\u0628\u0637\u0647 \u062e\u06cc\u0644\u06cc \u0628\u0647 \u06cc\u06a9<\/strong><\/li>\n<\/ol>\n<p>\u0627\u06cc\u0646 \u0622\u06cc\u062a\u0645 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0645\u062a\u0639\u0644\u0642 \u0628\u0647 \u062d\u0633\u0627\u0628 \u0647\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u0628\u0627\u0634\u062f\u060c \u0627\u0645\u0627 \u062d\u0633\u0627\u0628 \u0641\u0642\u0637 \u06cc\u06a9 \u0622\u06cc\u062a\u0645 \u062f\u0627\u0631\u062f!<\/p>\n<blockquote>\n<p>\ud83d\udca1 <em>\u0646\u06a9\u062a\u0647: \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <strong><code>ForeignKey<\/code><\/strong>  \u062f\u0631 <strong>\u0632\u06cc\u0627\u062f<\/strong> \u0633\u0645\u062a!<\/em><\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">class<\/span> <span class=\"nc\">Account<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Model<\/span><span class=\"p\">):<\/span>\n    <span class=\"nb\">id<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">(<\/span><span class=\"mi\">50<\/span><span class=\"p\">),<\/span> <span class=\"n\">primary_key<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"n\">nullable<\/span><span class=\"o\">=<\/span><span class=\"bp\">False<\/span><span class=\"p\">,<\/span> <span class=\"n\">unique<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>\n       <span class=\"p\">.<\/span>\n       <span class=\"p\">.<\/span>\n       <span class=\"p\">.<\/span>\n\n<span class=\"c1\"># Relations:\n<\/span>    <span class=\"n\">item<\/span>     <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">relationship<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Item\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">back_populates<\/span><span class=\"o\">=<\/span><span class=\"s\">\"accounts\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">item_id<\/span>  <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">(<\/span><span class=\"mi\">100<\/span><span class=\"p\">),<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">ForeignKey<\/span><span class=\"p\">(<\/span><span class=\"s\">\"item.id\"<\/span><span class=\"p\">))<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">class<\/span> <span class=\"nc\">Item<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Model<\/span><span class=\"p\">):<\/span>\n     <span class=\"nb\">id<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">(<\/span><span class=\"mi\">50<\/span><span class=\"p\">),<\/span> <span class=\"n\">primary_key<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"n\">nullable<\/span><span class=\"o\">=<\/span><span class=\"bp\">False<\/span><span class=\"p\">,<\/span>\n        <span class=\"p\">.<\/span>\n        <span class=\"p\">.<\/span>\n        <span class=\"p\">.<\/span>\n\n<span class=\"c1\"># Relations:\n<\/span>     <span class=\"n\">accounts<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">relationship<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Account\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">back_populates<\/span><span class=\"o\">=<\/span><span class=\"s\">'item'<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ol>\n<li><strong>\u0631\u0627\u0628\u0637\u0647 \u06cc\u06a9 \u0628\u0647 \u06cc\u06a9<\/strong><\/li>\n<\/ol>\n<p>\u062d\u0633\u0627\u0628 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06cc\u06a9 \u0645\u0648\u0631\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0648 \u0645\u0648\u0631\u062f \u0645\u062a\u0639\u0644\u0642 \u0628\u0647 \u06cc\u06a9 \u062d\u0633\u0627\u0628 \u0627\u0633\u062a!<\/p>\n<blockquote>\n<p>\ud83d\udca1 <em>\u0646\u06a9\u062a\u0647: \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <strong><code>uselist=False<\/code><\/strong>  \u062f\u0631 \u06cc\u06a9 \u0637\u0631\u0641 \u0648 <strong><code>ForeignKey<\/code><\/strong>  \u062f\u0631 \u0637\u0631\u0641 \u062f\u06cc\u06af\u0631!<\/em><\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">class<\/span> <span class=\"nc\">Account<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Model<\/span><span class=\"p\">):<\/span>\n     <span class=\"nb\">id<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">(<\/span><span class=\"mi\">50<\/span><span class=\"p\">),<\/span> <span class=\"n\">primary_key<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"n\">nullable<\/span><span class=\"o\">=<\/span><span class=\"bp\">False<\/span><span class=\"p\">,<\/span> <span class=\"n\">unique<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">.<\/span>\n        <span class=\"p\">.<\/span>\n        <span class=\"p\">.<\/span>\n\n<span class=\"c1\"># Relations:\n<\/span>     <span class=\"n\">item<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">relationship<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Item\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">back_populates<\/span><span class=\"o\">=<\/span><span class=\"s\">'account'<\/span><span class=\"p\">,<\/span> <span class=\"n\">uselist<\/span><span class=\"o\">=<\/span><span class=\"bp\">False<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">class<\/span> <span class=\"nc\">Item<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Model<\/span><span class=\"p\">):<\/span>\n     <span class=\"nb\">id<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">(<\/span><span class=\"mi\">50<\/span><span class=\"p\">),<\/span> <span class=\"n\">primary_key<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"n\">nullable<\/span><span class=\"o\">=<\/span><span class=\"bp\">False<\/span><span class=\"p\">,<\/span> <span class=\"n\">unique<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">.<\/span>\n        <span class=\"p\">.<\/span>\n        <span class=\"p\">.<\/span>\n\n<span class=\"c1\"># Relations:\n<\/span>     <span class=\"n\">account<\/span>    <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">relationship<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Account\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">back_populates<\/span><span class=\"o\">=<\/span><span class=\"s\">'item'<\/span><span class=\"p\">)<\/span>\n     <span class=\"n\">account_id<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">(<\/span><span class=\"mi\">100<\/span><span class=\"p\">),<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">ForeignKey<\/span><span class=\"p\">(<\/span><span class=\"s\">\"account.id\"<\/span><span class=\"p\">),<\/span> <span class=\"n\">unique<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ol>\n<li><strong>\u0631\u0627\u0628\u0637\u0647 \u062e\u06cc\u0644\u06cc \u0628\u0647 \u062e\u06cc\u0644\u06cc \u0647\u0627<\/strong><\/li>\n<\/ol>\n<p>\u062d\u0633\u0627\u0628 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0627\u0631\u0627\u06cc \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0622\u06cc\u062a\u0645 \u0647\u0627 \u0628\u0627\u0634\u062f\u060c \u0648 \u0622\u06cc\u062a\u0645 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0645\u062a\u0639\u0644\u0642 \u0628\u0647 \u062d\u0633\u0627\u0628 \u0647\u0627\u06cc \u0628\u0633\u06cc\u0627\u0631\u06cc \u0628\u0627\u0634\u062f!<\/p>\n<blockquote>\n<p>\ud83d\udca1 <em>\u0646\u06a9\u062a\u0647: \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <strong><code>Association<\/code><\/strong>  \u06a9\u0644\u0627\u0633 \u0628\u0627 \u0645\u0648\u0644\u062a\u06cc <strong><code>ForeignKey<\/code><\/strong>!<\/em><\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">class<\/span> <span class=\"nc\">Association<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Model<\/span><span class=\"p\">):<\/span>\n     <span class=\"n\">item<\/span>         <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">relationship<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Item\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">back_populates<\/span><span class=\"o\">=<\/span><span class=\"s\">\"accounts\"<\/span><span class=\"p\">)<\/span>\n     <span class=\"n\">account<\/span>      <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">relationship<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Account\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">back_populates<\/span><span class=\"o\">=<\/span><span class=\"s\">\"items\"<\/span><span class=\"p\">)<\/span>\n     <span class=\"n\">item_id<\/span>      <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"s\">'item_id'<\/span><span class=\"p\">,<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">,<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">ForeignKey<\/span><span class=\"p\">(<\/span><span class=\"s\">'item.id'<\/span><span class=\"p\">),<\/span> <span class=\"n\">primary_key<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>\n     <span class=\"n\">account_id<\/span>   <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"s\">'account_id'<\/span><span class=\"p\">,<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">,<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">ForeignKey<\/span><span class=\"p\">(<\/span><span class=\"s\">'account.id'<\/span><span class=\"p\">),<\/span> <span class=\"n\">primary_key<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>\n\n     <span class=\"k\">def<\/span> <span class=\"nf\">toDict<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\n        <span class=\"k\">return<\/span> <span class=\"p\">{<\/span> <span class=\"n\">c<\/span><span class=\"p\">.<\/span><span class=\"n\">key<\/span><span class=\"p\">:<\/span> <span class=\"nb\">getattr<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">c<\/span><span class=\"p\">.<\/span><span class=\"n\">key<\/span><span class=\"p\">)<\/span> <span class=\"k\">for<\/span> <span class=\"n\">c<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">inspect<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">).<\/span><span class=\"n\">mapper<\/span><span class=\"p\">.<\/span><span class=\"n\">column_attrs<\/span> <span class=\"p\">}<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">Account<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Model<\/span><span class=\"p\">):<\/span>\n     <span class=\"nb\">id<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">(<\/span><span class=\"mi\">50<\/span><span class=\"p\">),<\/span> <span class=\"n\">primary_key<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"n\">nullable<\/span><span class=\"o\">=<\/span><span class=\"bp\">False<\/span><span class=\"p\">,<\/span> <span class=\"n\">unique<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">.<\/span>\n        <span class=\"p\">.<\/span>\n        <span class=\"p\">.<\/span>\n\n<span class=\"c1\"># Relations:\n<\/span>     <span class=\"n\">items<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">relationship<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Association\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">back_populates<\/span><span class=\"o\">=<\/span><span class=\"s\">'account'<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">class<\/span> <span class=\"nc\">Item<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Model<\/span><span class=\"p\">):<\/span>\n     <span class=\"nb\">id<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">Column<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">String<\/span><span class=\"p\">(<\/span><span class=\"mi\">50<\/span><span class=\"p\">),<\/span> <span class=\"n\">primary_key<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"n\">nullable<\/span><span class=\"o\">=<\/span><span class=\"bp\">False<\/span><span class=\"p\">,<\/span> <span class=\"n\">unique<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">.<\/span>\n        <span class=\"p\">.<\/span>\n        <span class=\"p\">.<\/span>\n\n<span class=\"c1\"># Relations:\n<\/span>     <span class=\"n\">accounts<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db<\/span><span class=\"p\">.<\/span><span class=\"n\">relationship<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Association\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">back_populates<\/span><span class=\"o\">=<\/span><span class=\"s\">\"item\"<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0641\u0647\u0648\u0645 \u0627\u0632 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f <strong>\u0645\u0639\u06a9\u0648\u0633<\/strong> \u0648 <strong>back_populate<\/strong> \u062f\u0631 SQLalchemy \u0627\u0632 \u0627\u06cc\u0646 \u067e\u0627\u0633\u062e \u0633\u0631\u0631\u06cc\u0632 \u067e\u0634\u062a\u0647.<\/p>\n<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0628\u0647 \u0645\u0639\u0631\u0641\u06cc ORM \u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0627\u0635 SQLAlchemy ORM \u067e\u0631\u062f\u0627\u062e\u062a\u0647 \u0627\u06cc\u0645.  \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Flask \u0648 Flask-SQLAlchemy\u060c \u06cc\u06a9 API \u0633\u0627\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645 \u06a9\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 PostgreSQL \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0648 \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.  \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0645\u0627 \u0631\u0648\u0627\u0628\u0637 \u0627\u0633\u0627\u0633\u06cc SQLAlchemy \u0631\u0627 \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<blockquote>\n<p><em>\u06a9\u062f \u0645\u0646\u0628\u0639 \u067e\u0631\u0648\u0698\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 GitHub \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f.<\/em><\/p>\n<\/blockquote><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0646\u062d\u0648\u0647 \u0633\u0627\u062e\u062a \u06cc\u06a9 CRUD API \u0633\u0627\u062f\u0647 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u06cc\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u062f \u06af\u0631\u0641\u062a \u0641\u0644\u0627\u0633\u06a9\u060c SQLAlchemy\u060c \u0648 PostgreSQL. \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628 \u0645\u0639\u0631\u0641\u06cc \u0686\u06cc\u0632 \u0686\u0646\u062f\u0634 \u0648 \u06a9\u062b\u06cc\u0641 \u0628\u0647 \u0686\u0647\u0627\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a \u0627\u0633\u0627\u0633\u06cc \u06a9\u0647 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631\u06cc \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f \u0627\u0634\u0627\u0631\u0647 \u062f\u0627\u0631\u062f: \u0627\u064a\u062c\u0627\u062f \u0643\u0631\u062f\u0646\u060c \u062e\u0648\u0627\u0646\u062f\u0646\u060c \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc\u060c \u0648 \u062d\u0630\u0641. \ud83d\udcdd \u062a\u0648\u062c\u0647: \u0627\u06cc\u0646 \u06cc\u06a9 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":9110,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-9109","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/9109","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=9109"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/9109\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/9110"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=9109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=9109"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=9109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}