<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://www.rainsbrook.co.uk/wiki/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://www.rainsbrook.co.uk/wiki/feed.php">
        <title>Rainsbrook - python</title>
        <description></description>
        <link>https://www.rainsbrook.co.uk/wiki/</link>
        <image rdf:resource="https://www.rainsbrook.co.uk/wiki/lib/exe/fetch.php?media=wiki:dokuwiki.svg" />
       <dc:date>2026-04-30T18:44:30+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:flask-api&amp;rev=1754557832&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:flask-mysql&amp;rev=1717080627&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:flask-templates&amp;rev=1717080644&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:flask&amp;rev=1717080681&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:python-boto3&amp;rev=1725446585&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:python-code&amp;rev=1739530101&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:python-data-struct&amp;rev=1762343726&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:python&amp;rev=1764698720&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:runcommand&amp;rev=1741961086&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://www.rainsbrook.co.uk/wiki/lib/exe/fetch.php?media=wiki:dokuwiki.svg">
        <title>Rainsbrook</title>
        <link>https://www.rainsbrook.co.uk/wiki/</link>
        <url>https://www.rainsbrook.co.uk/wiki/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
    </image>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:flask-api&amp;rev=1754557832&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-08-07T09:10:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>flask-api</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=python:flask-api&amp;rev=1754557832&amp;do=diff</link>
        <description>Output result from API

The BASH below is not specific to Flask, but the MySQL probably is.

Debugging API calls

Send to this URL to see just what you have actually sent to help any debugging.

&lt;https://httpbin.org/anything&gt;

Send to POST test data


curl -i -X POST \
-H 'Content-Type: application/json' \
-d &quot;{\&quot;auth_token\&quot;:\&quot;${AUTH_TOKEN}\&quot;, \&quot;user_id\&quot;:\&quot;${EMAIL}\&quot;, \&quot;file_ref\&quot;:\&quot;File.odt\&quot;, \&quot;uuid\&quot;:\&quot;${UUID}\&quot;}&quot; \ 
http://192.168.11.7:5000/api</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:flask-mysql&amp;rev=1717080627&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-05-30T14:50:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>flask-mysql</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=python:flask-mysql&amp;rev=1717080627&amp;do=diff</link>
        <description>MySQL connector

Also works with MariaDB

Boolean

Get boolean true/false back, db stores 1 or 0


statement = &quot;SELECT IF(login_status, 'true', 'false') from user_model WHERE user_id = %s;&quot;

session_name = session[&quot;username&quot;]
mycursor.execute(statement, (session_name,))</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:flask-templates&amp;rev=1717080644&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-05-30T14:50:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>flask-templates</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=python:flask-templates&amp;rev=1717080644&amp;do=diff</link>
        <description>Templates

base.html template:-


&lt;!doctype html&gt;

&lt;html lang=&quot;en-gb&quot;&gt;
  &lt;head&gt;
    &lt;link rel=&quot;icon&quot; type=&quot;image/x-icon&quot; href=&quot;/static/globe.ico&quot;&gt;
      {% block header %}
      {% endblock %}
      &lt;meta charset=&quot;utf-8&quot;&gt;
    &lt;style&gt;
    fieldset {
      background-color: #eeeeee;
      width: 60% }
    legend {
      background-color: gray;
      color: white;
      padding: 5px 10px; }
    input {
      margin: 5px;  }
    &lt;/style&gt;
  &lt;/head&gt;

  &lt;body&gt;
    &lt;img src=&quot;/static/globe.jpg&quot; width=&quot;25…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:flask&amp;rev=1717080681&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-05-30T14:51:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>flask</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=python:flask&amp;rev=1717080681&amp;do=diff</link>
        <description>Python Flask

Templates 


API 


MySQL connector 


Running Flask on all interfaces

Adding --host binds to all interfaces, not just localhost.


$ flask run --host=0.0.0.0
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on all addresses (0.0.0.0)
 * Running on http://127.0.0.1:5000
 * Running on http://10.1.2.3:5000
Press CTRL+C to quit</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:python-boto3&amp;rev=1725446585&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-04T10:43:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>python-boto3</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=python:python-boto3&amp;rev=1725446585&amp;do=diff</link>
        <description>Python - boto3 library for AWS

Boto3 is AWS's python library for interacting with the AWS API. As everything (even the console under the surface) is API based, boto3 allows you to do pretty much everything you can do elsewhere. It may not always be up to date enough to follow new feateres, so ensure you have a up to date copy of the library with</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:python-code&amp;rev=1739530101&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-14T10:48:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>python-code</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=python:python-code&amp;rev=1739530101&amp;do=diff</link>
        <description>Python code snippets

FOR loop

Looping through all the items in a dictionary.

Print all the keys


exampledict =	{
  &quot;class&quot;: &quot;Modified Hall&quot;,
  &quot;engine&quot;: &quot;Witherslack Hall&quot;,
  &quot;built&quot;: &quot;1948&quot;
}
for x in thisdict:
  print(x)



class
engine
built</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:python-data-struct&amp;rev=1762343726&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-05T11:55:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>python-data-struct</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=python:python-data-struct&amp;rev=1762343726&amp;do=diff</link>
        <description>Python Data Structures

Summary

[ ] = List 

{ } = Dictionary 

( ) = Tuple 


Boolean:- boolean_true_of_false 


List

Identified by square brackets and uses comma as seperator between elements. A list element is looked up by it's position in the list.


list = ['value1', 'value2']


Remember, list indices start at</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:python&amp;rev=1764698720&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-02T18:05:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>python</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=python:python&amp;rev=1764698720&amp;do=diff</link>
        <description>Python

 “Eventually I got better -- I started making my own mistakes.”

Fun reason to learn Python:- 

&lt;https://www.4dbrix.com/documentation/python/&gt;

Python Game:- 

&lt;https://www.twilio.com/quest&gt;

Rather more serious tutorial:- 

&lt;https://docs.python.org/3/tutorial/&gt;

Flask application framework 


Install pip3


# apt-cache search python3-pip
python3-pip - Python package installer
root@sysmgmt:~# apt-get install python3-pip
Reading package lists... Done
Building dependency tree       
Readin…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=python:runcommand&amp;rev=1741961086&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-14T14:04:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>runcommand</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=python:runcommand&amp;rev=1741961086&amp;do=diff</link>
        <description>Run Command

The subprocess module has built-in protection against command execution:


from subprocess import call

# An invocation of the call(...) function will ensure only a single
# command is run.
call([&quot;ls&quot;, &quot;-l&quot;])



This protection can be disabled</description>
    </item>
</rdf:RDF>
