| |
python:robyn [2024/06/26 10:24] – 作成 ともやん | python:robyn [2024/06/27 04:59] (現在) – ともやん |
---|
ドキュメント: [[https://robyn.tech/documentation|Robyn API documentation]]\\ | ドキュメント: [[https://robyn.tech/documentation|Robyn API documentation]]\\ |
| |
| ===== プロジェクトの作成 ===== |
| 公式: [[https://robyn.tech/documentation/example_app#installing-robyn|]]\\ |
| [[https://robyn.tech/documentation/api_reference#installing-robyn|]]\\ |
| 公式サンプル: [[git>sparckles/example_robyn_app|sparckles/example_robyn_app]]\\ |
| |
| <WRAP color_term> |
| <WRAP color_command><html><pre> |
| <font color="#0087FF"><b>$</b></font> <font color="#26A269">mkdir</font> <font color="#A347BA">-p</font> robyn_proj <font color="#12488B"><b>&&</b></font> <font color="#26A269">cd</font> robyn_proj |
| <font color="#0087FF"><b>$</b></font> <font color="#26A269">python</font> <font color="#A347BA">-m</font> venv .venv <font color="#12488B"><b>&&</b></font> <font color="#26A269">.</font> .venv/bin/activate <font color="#12488B"><b>&&</b></font> <font color="#26A269">pip</font> install <font color="#A347BA">-U</font> pip |
| </pre></html></WRAP> |
| <WRAP color_result><html><pre> |
| Requirement already satisfied: pip in ./.venv/lib64/python3.12/site-packages (23.3.2) |
| Collecting pip |
| Downloading pip-24.1-py3-none-any.whl.metadata (3.6 kB) |
| Downloading pip-24.1-py3-none-any.whl (1.8 MB) |
| <font color="#5FAF00">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font> <font color="#26A269">1.8/1.8 MB</font> <font color="#C01C28">8.7 MB/s</font> eta <font color="#2AA1B3">0:00:00</font> |
| Installing collected packages: pip |
| Attempting uninstall: pip |
| Found existing installation: pip 23.3.2 |
| Uninstalling pip-23.3.2: |
| Successfully uninstalled pip-23.3.2 |
| Successfully installed pip-24.1 |
| </pre></html></WRAP> |
| <WRAP color_command><html><pre> |
| (.venv) <font color="#0087FF"><b>$</b></font> <font color="#26A269">pip</font> install robyn robyn<font color="#12488B"><b>[</b></font>templating<font color="#12488B"><b>]</b></font> |
| </pre></html></WRAP> |
| <WRAP color_result_long><html><pre> |
| Collecting robyn |
| Downloading robyn-0.56.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (8.6 kB) |
| Collecting watchdog==2.2.1 (from robyn) |
| Downloading watchdog-2.2.1-py3-none-manylinux2014_x86_64.whl.metadata (34 kB) |
| Collecting multiprocess==0.70.14 (from robyn) |
| Downloading multiprocess-0.70.14-py310-none-any.whl.metadata (6.6 kB) |
| Collecting nestd==0.3.1 (from robyn) |
| Downloading nestd-0.3.1-py3-none-any.whl.metadata (3.4 kB) |
| Collecting inquirerpy==0.3.4 (from robyn) |
| Downloading InquirerPy-0.3.4-py3-none-any.whl.metadata (8.1 kB) |
| Collecting rustimport==1.3.4 (from robyn) |
| Downloading rustimport-1.3.4-py3-none-any.whl.metadata (13 kB) |
| Collecting orjson==3.9.15 (from robyn) |
| Downloading orjson-3.9.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (49 kB) |
| <font color="#5FAF00">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font> <font color="#26A269">49.5/49.5 kB</font> <font color="#C01C28">5.6 MB/s</font> eta <font color="#2AA1B3">0:00:00</font> |
| Collecting uvloop~=0.19.0 (from robyn) |
| Downloading uvloop-0.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.9 kB) |
| Collecting pfzy<0.4.0,>=0.3.1 (from inquirerpy==0.3.4->robyn) |
| Downloading pfzy-0.3.4-py3-none-any.whl.metadata (4.9 kB) |
| Collecting prompt-toolkit<4.0.0,>=3.0.1 (from inquirerpy==0.3.4->robyn) |
| Downloading prompt_toolkit-3.0.47-py3-none-any.whl.metadata (6.4 kB) |
| Collecting dill>=0.3.6 (from multiprocess==0.70.14->robyn) |
| Downloading dill-0.3.8-py3-none-any.whl.metadata (10 kB) |
| Collecting toml>=0.10.2 (from rustimport==1.3.4->robyn) |
| Downloading toml-0.10.2-py2.py3-none-any.whl.metadata (7.1 kB) |
| Collecting jinja2==3.0.1 (from robyn[templating]) |
| Downloading Jinja2-3.0.1-py3-none-any.whl.metadata (3.5 kB) |
| Collecting MarkupSafe>=2.0 (from jinja2==3.0.1->robyn[templating]) |
| Downloading MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.0 kB) |
| Collecting wcwidth (from prompt-toolkit<4.0.0,>=3.0.1->inquirerpy==0.3.4->robyn) |
| Downloading wcwidth-0.2.13-py2.py3-none-any.whl.metadata (14 kB) |
| Downloading robyn-0.56.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB) |
| <font color="#5FAF00">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font> <font color="#26A269">2.3/2.3 MB</font> <font color="#C01C28">8.7 MB/s</font> eta <font color="#2AA1B3">0:00:00</font> |
| Downloading InquirerPy-0.3.4-py3-none-any.whl (67 kB) |
| <font color="#5FAF00">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font> <font color="#26A269">67.7/67.7 kB</font> <font color="#C01C28">9.1 MB/s</font> eta <font color="#2AA1B3">0:00:00</font> |
| Downloading multiprocess-0.70.14-py310-none-any.whl (134 kB) |
| <font color="#5FAF00">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font> <font color="#26A269">134.3/134.3 kB</font> <font color="#C01C28">10.3 MB/s</font> eta <font color="#2AA1B3">0:00:00</font> |
| Downloading nestd-0.3.1-py3-none-any.whl (2.8 kB) |
| Downloading orjson-3.9.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (138 kB) |
| <font color="#5FAF00">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font> <font color="#26A269">138.7/138.7 kB</font> <font color="#C01C28">10.1 MB/s</font> eta <font color="#2AA1B3">0:00:00</font> |
| Downloading rustimport-1.3.4-py3-none-any.whl (26 kB) |
| Downloading watchdog-2.2.1-py3-none-manylinux2014_x86_64.whl (78 kB) |
| <font color="#5FAF00">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font> <font color="#26A269">79.0/79.0 kB</font> <font color="#C01C28">10.8 MB/s</font> eta <font color="#2AA1B3">0:00:00</font> |
| Downloading Jinja2-3.0.1-py3-none-any.whl (133 kB) |
| <font color="#5FAF00">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font> <font color="#26A269">133.7/133.7 kB</font> <font color="#C01C28">11.1 MB/s</font> eta <font color="#2AA1B3">0:00:00</font> |
| Downloading uvloop-0.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB) |
| <font color="#5FAF00">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font> <font color="#26A269">4.2/4.2 MB</font> <font color="#C01C28">11.4 MB/s</font> eta <font color="#2AA1B3">0:00:00</font> |
| Downloading dill-0.3.8-py3-none-any.whl (116 kB) |
| <font color="#5FAF00">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font> <font color="#26A269">116.3/116.3 kB</font> <font color="#C01C28">9.0 MB/s</font> eta <font color="#2AA1B3">0:00:00</font> |
| Downloading MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (28 kB) |
| Downloading pfzy-0.3.4-py3-none-any.whl (8.5 kB) |
| Downloading prompt_toolkit-3.0.47-py3-none-any.whl (386 kB) |
| <font color="#5FAF00">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font> <font color="#26A269">386.4/386.4 kB</font> <font color="#C01C28">10.3 MB/s</font> eta <font color="#2AA1B3">0:00:00</font> |
| Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB) |
| Downloading wcwidth-0.2.13-py2.py3-none-any.whl (34 kB) |
| Installing collected packages: wcwidth, watchdog, uvloop, toml, prompt-toolkit, pfzy, orjson, nestd, MarkupSafe, dill, rustimport, multiprocess, jinja2, inquirerpy, robyn |
| Successfully installed MarkupSafe-2.1.5 dill-0.3.8 inquirerpy-0.3.4 jinja2-3.0.1 multiprocess-0.70.14 nestd-0.3.1 orjson-3.9.15 pfzy-0.3.4 prompt-toolkit-3.0.47 robyn-0.56.0 rustimport-1.3.4 toml-0.10.2 uvloop-0.19.0 watchdog-2.2.1 wcwidth-0.2.13 |
| </pre></html></WRAP> |
| <WRAP color_command><html><pre> |
| (.venv) <font color="#0087FF"><b>$</b></font> <font color="#26A269">python</font> <font color="#A347BA">-m</font> robyn <font color="#A347BA">--create</font> |
| </pre></html></WRAP> |
| <WRAP color_result><html><pre> |
| <font color="#D7AF87">?</font> Directory Path:<font color="#5FAFFF"> .</font> |
| <font color="#D7AF87">?</font> Need Docker? (Y/N)<font color="#5FAFFF"> Y</font> |
| <font color="#D7AF87">?</font> Please select project type (Mongo/Postgres/Sqlalchemy/Prisma): <font color="#5FAFFF"> Postgres</font> |
| Creating a new Robyn project '/home/tomoyan/my_projects/robyn_proj'... |
| New Robyn project created in '/home/tomoyan/my_projects/robyn_proj' |
| </pre></html></WRAP> |
| <WRAP color_command><html><pre> |
| (.venv) <font color="#0087FF"><b>$</b></font> <font color="#26A269">tree</font> |
| </pre></html></WRAP> |
| <WRAP color_result><html><pre> |
| <font color="#12488B"><b>.</b></font> |
| ├── Dockerfile |
| ├── <font color="#12488B"><b>__pycache__</b></font> |
| │ └── app.cpython-312.pyc |
| ├── app.py |
| ├── requirements.txt |
| └── supervisord.conf |
| |
| 2 directories, 5 files |
| </pre></html></WRAP> |
| <WRAP color_command><html><pre> |
| (.venv) <font color="#0087FF"><b>$</b></font> <font color="#26A269">bat</font> <u style="text-decoration-style:solid">app.py</u> |
| </pre></html></WRAP> |
| <WRAP color_result><html><pre class=Bat> |
| <font color="#444444"> 1</font> <font color="#F92672">import</font><font color="#F8F8F2"> psycopg2</font> |
| <font color="#444444"> 2</font> <font color="#F92672">from</font><font color="#F8F8F2"> robyn </font><font color="#F92672">import</font><font color="#F8F8F2"> Robyn</font> |
| <font color="#444444"> 3</font> |
| <font color="#444444"> 4</font> <font color="#FFFFFF">DB_NAME</font><font color="#F8F8F2"> </font><font color="#F92672">=</font><font color="#F8F8F2"> </font><font color="#E6DB74">"postgresDB"</font> |
| <font color="#444444"> 5</font> <font color="#FFFFFF">DB_HOST</font><font color="#F8F8F2"> </font><font color="#F92672">=</font><font color="#F8F8F2"> </font><font color="#E6DB74">"localhost"</font> |
| <font color="#444444"> 6</font> <font color="#FFFFFF">DB_USER</font><font color="#F8F8F2"> </font><font color="#F92672">=</font><font color="#F8F8F2"> </font><font color="#E6DB74">"postgres"</font> |
| <font color="#444444"> 7</font> <font color="#FFFFFF">DB_PASS</font><font color="#F8F8F2"> </font><font color="#F92672">=</font><font color="#F8F8F2"> </font><font color="#E6DB74">"password"</font> |
| <font color="#444444"> 8</font> <font color="#FFFFFF">DB_PORT</font><font color="#F8F8F2"> </font><font color="#F92672">=</font><font color="#F8F8F2"> </font><font color="#E6DB74">"5455"</font> |
| <font color="#444444"> 9</font> |
| <font color="#444444"> 10</font> <font color="#F8F8F2">conn </font><font color="#F92672">=</font><font color="#F8F8F2"> psycopg2.connect(</font><font color="#FD971F">database</font><font color="#F92672">=</font><font color="#FFFFFF">DB_NAME</font><font color="#F8F8F2">, </font><font color="#FD971F">host</font><font color="#F92672">=</font><font color="#FFFFFF">DB_HOST</font><font color="#F8F8F2">, </font><font color="#FD971F">user</font><font color="#F92672">=</font><font color="#FFFFFF">DB_USER</font><font color="#F8F8F2">, </font><font color="#FD971F">password</font><font color="#F92672">=</font><font color="#FFFFFF">DB_PASS</font><font color="#F8F8F2">, </font><font color="#FD971F">port</font><font color="#F92672">=</font><font color="#FFFFFF">DB_PORT</font><font color="#F8F8F2">)</font> |
| <font color="#444444"> 11</font> |
| <font color="#444444"> 12</font> <font color="#F8F8F2">app </font><font color="#F92672">=</font><font color="#F8F8F2"> Robyn(__file__)</font> |
| <font color="#444444"> 13</font> |
| <font color="#444444"> 14</font> |
| <font color="#444444"> 15</font> <font color="#75715E"># create a route to fetch all users</font> |
| <font color="#444444"> 16</font> <font color="#F8F8F2">@app.get(</font><font color="#E6DB74">"/users"</font><font color="#F8F8F2">)</font> |
| <font color="#444444"> 17</font> <font color="#F92672">def</font><font color="#F8F8F2"> </font><font color="#A6E22E">get_users</font><font color="#F8F8F2">():</font> |
| <font color="#444444"> 18</font> <font color="#F8F8F2"> cursor </font><font color="#F92672">=</font><font color="#F8F8F2"> conn.cursor()</font> |
| <font color="#444444"> 19</font> <font color="#F8F8F2"> cursor.execute(</font><font color="#E6DB74">"</font><font color="#F92672">SELECT</font><font color="#E6DB74"> </font><font color="#FFFFFF">*</font><font color="#E6DB74"> </font><font color="#F92672">FROM</font><font color="#E6DB74"> users"</font><font color="#F8F8F2">)</font> |
| <font color="#444444"> 20</font> <font color="#F8F8F2"> all_users </font><font color="#F92672">=</font><font color="#F8F8F2"> cursor.fetchall()</font> |
| <font color="#444444"> 21</font> <font color="#F8F8F2"> </font><font color="#F92672">return</font><font color="#F8F8F2"> {</font><font color="#E6DB74">"users"</font><font color="#F8F8F2">: all_users}</font> |
| <font color="#444444"> 22</font> |
| <font color="#444444"> 23</font> |
| <font color="#444444"> 24</font> <font color="#F8F8F2">@app.get(</font><font color="#E6DB74">"/"</font><font color="#F8F8F2">)</font> |
| <font color="#444444"> 25</font> <font color="#F92672">def</font><font color="#F8F8F2"> </font><font color="#A6E22E">index</font><font color="#F8F8F2">():</font> |
| <font color="#444444"> 26</font> <font color="#F8F8F2"> </font><font color="#F92672">return</font><font color="#F8F8F2"> </font><font color="#E6DB74">"Hello World!"</font> |
| <font color="#444444"> 27</font> |
| <font color="#444444"> 28</font> |
| <font color="#444444"> 29</font> <font color="#F92672">if</font><font color="#F8F8F2"> __name__ </font><font color="#F92672">==</font><font color="#F8F8F2"> </font><font color="#E6DB74">"__main__"</font><font color="#F8F8F2">:</font> |
| <font color="#444444"> 30</font> <font color="#F8F8F2"> app.start(</font><font color="#FD971F">url</font><font color="#F92672">=</font><font color="#E6DB74">"0.0.0.0"</font><font color="#F8F8F2">, </font><font color="#FD971F">port</font><font color="#F92672">=</font><font color="#BE84FF">8080</font><font color="#F8F8F2">)</font> |
| </pre></html></WRAP> |
| </WRAP> |
| |