How do i link my postgresql to my python server so i dont have to link it in the code?

pygaps-dev
TRIAL

5 months ago

Title

Solved

0 Replies

pygaps-dev
TRIAL

5 months ago

8f22bd42-f5e7-4c51-b7de-0fb5ac0c98b7


5 months ago

Environment variables




pygaps-dev
TRIAL

5 months ago

os.getenv('DB_NAME') ?


pygaps-dev
TRIAL

5 months ago

thats just an example btw


5 months ago

```import os

value = os.getenv("VARNAME") # Replace VARNAME with the actual variable name
print(value)
```


pygaps-dev
TRIAL

5 months ago

Okay so


5 months ago

don't actually print your secrets


pygaps-dev
TRIAL

5 months ago

DB_PARAMS = {
    'dbname': os.getenv('PGDATABASE'),
    'user': os.getenv('PGUSER'),
    'password': os.getenv('PGPASSWORD'),
    'host': os.getenv('PGHOST'),
    'port': os.getenv('PGPORT')
}

pygaps-dev
TRIAL

5 months ago

?


5 months ago

I'd assume so - port may throw type errors (unsure how python likes this)


5 months ago

my python knowledge is sketchy at best


pygaps-dev
TRIAL

5 months ago

Oh


pygaps-dev
TRIAL

5 months ago

Lemme try it rq


pygaps-dev
TRIAL

5 months ago

Hmph


pygaps-dev
TRIAL

5 months ago

I tried it


pygaps-dev
TRIAL

5 months ago

@BillyDotWS


pygaps-dev
TRIAL

5 months ago

I'm getting an error


pygaps-dev
TRIAL

5 months ago

Traceback (most recent call last):

  File "/app/server.py", line 218, in 

    create_user_table()

  File "/app/server.py", line 32, in create_user_table

    conn = get_db_connection()

           ^^^^^^^^^^^^^^^^^^^

  File "/app/server.py", line 27, in get_db_connection

    conn = psycopg2.connect(**DB_PARAMS)

           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "/opt/venv/lib/python3.12/site-packages/psycopg2/__init__.py", line 122, in connect

    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)

           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

psycopg2.OperationalError: connection to server at "postgres.railway.internal" (fd12:464e:84c::6a:9815:3211), port 5000 failed: Connection refused

    Is the server running on that host and accepting TCP/IP connections?

5 months ago

are you positive it's running on 5000?


5 months ago

normally runs on 5432 by default


5 months ago

  • are you running this on railway or locally?


5 months ago

this won't work locally, you'll need to use the public domain


pygaps-dev
TRIAL

5 months ago

yes


pygaps-dev
TRIAL

5 months ago

the postgresql im running it on railway


5 months ago

and your service?


5 months ago

or are you running the service locally


pygaps-dev
TRIAL

5 months ago

python server too


pygaps-dev
TRIAL

5 months ago

on railway


pygaps-dev
TRIAL

5 months ago

the same project


pygaps-dev
TRIAL

5 months ago

two diff services


pygaps-dev
TRIAL

5 months ago

i dont know how to change the port, what i did was change the "pgport" to 5000 and also change the port in the settings to 5000


pygaps-dev
TRIAL

5 months ago

thats what i


pygaps-dev
TRIAL

5 months ago

usualyl do


pygaps-dev
TRIAL

5 months ago

in my python apis


5 months ago

can you change port back to 5432 on both


pygaps-dev
TRIAL

5 months ago

sure


5 months ago

I think you have to do a tad extra to change the port postgres runs on on the postgres side


5 months ago

once we figure out if that's the issue, then you can figure that part out if you want to change it for whatever reason


pygaps-dev
TRIAL

5 months ago

alrightyy


pygaps-dev
TRIAL

5 months ago

im redeploying the python api


pygaps-dev
TRIAL

5 months ago

Traceback (most recent call last):

  File "/app/server.py", line 218, in 

    create_user_table()

  File "/app/server.py", line 32, in create_user_table

    conn = get_db_connection()

           ^^^^^^^^^^^^^^^^^^^

  File "/app/server.py", line 27, in get_db_connection

    conn = psycopg2.connect(**DB_PARAMS)

           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "/opt/venv/lib/python3.12/site-packages/psycopg2/__init__.py", line 122, in connect

    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)

           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

psycopg2.OperationalError: connection to server at "postgres.railway.internal" (fd12:464e:84c::6a:9860:cc56), port 5432 failed: FATAL:  password authentication failed for user "postgres"

connection to server at "postgres.railway.internal" (fd12:464e:84c::6a:9860:cc56), port 5432 failed: FATAL:  password authentication failed for user "postgres"

5 months ago

progress!


pygaps-dev
TRIAL

5 months ago

I see that the password authentication failed


5 months ago

so, is the password correct


pygaps-dev
TRIAL

5 months ago

I linked the password


5 months ago

and you didn't change that, right?


pygaps-dev
TRIAL

5 months ago

1336411510326431700


pygaps-dev
TRIAL

5 months ago

dont know why


pygaps-dev
TRIAL

5 months ago

nope


pygaps-dev
TRIAL

5 months ago

i didnt change it


5 months ago

check PGPASSWORD is filled with a print


5 months ago

I've seen a couple cases on my dashboard where it goes missing randomly


pygaps-dev
TRIAL

5 months ago

what do you mean filled with a print?


5 months ago

print(os.getenv('PGPASSWORD'))


5 months ago

or a null check


pygaps-dev
TRIAL

5 months ago

it has random letters and numbers


pygaps-dev
TRIAL

5 months ago

and does not have a print


5 months ago

check it's in your container runtime


pygaps-dev
TRIAL

5 months ago

oh


5 months ago

(null check is probably a better idea if this is a prod app)


pygaps-dev
TRIAL

5 months ago

wait


pygaps-dev
TRIAL

5 months ago

connection to server at "postgres.railway.internal" (fd12:464e:84c::6a:9860:cc56), port 5432 failed: FATAL: password authentication failed for user "postgres"


pygaps-dev
TRIAL

5 months ago

this means both the port and authentication failed?


5 months ago

nope, just auth


pygaps-dev
TRIAL

5 months ago

port 5432 failed: FATAL


5 months ago

if you see auth failed, the connection is fine


5 months ago

that's just the address details


pygaps-dev
TRIAL

5 months ago

oh


pygaps-dev
TRIAL

5 months ago

okay so i dont get what you mean the pgpassword is filled with a print😭


5 months ago

In your code - check the environment variable has stuff in it


pygaps-dev
TRIAL

5 months ago

it links the connection using this:

def get_db_connection():
    conn = psycopg2.connect(**DB_PARAMS)
    return conn

and this is the DB_PARAMS:

DB_PARAMS = {
    'dbname': os.getenv('PGDATABASE'),
    'user': os.getenv('PGUSER'),
    'password': os.getenv('PGPASSWORD'),
    'host': os.getenv('PGHOST'),
    'port': os.getenv('PGPORT')
}

pygaps-dev
TRIAL

5 months ago

environnement variable has no stuff in it, it just uses os to get the environnement variable


pygaps-dev
TRIAL

5 months ago

?


pygaps-dev
TRIAL

5 months ago

@BillyDotWS


pygaps-dev
TRIAL

5 months ago

any idea?


5 months ago

Check that your environment variables are all setup correctly

import os print(os.getenv('PGDATABASE')) print(os.getenv('PGUSER')) print(os.getenv('PGPASSWORD')) print(os.getenv('PGHOST')) print(os.getenv('PGPORT'))


pygaps-dev
TRIAL

5 months ago

Alrighty


5 months ago

your postrgres password got changed, i've reverted that for you


pygaps-dev
TRIAL

5 months ago

oh alright


5 months ago

looks like you are hardcoding the password in your code now, please use only environment variables


pygaps-dev
TRIAL

5 months ago

oh


pygaps-dev
TRIAL

5 months ago

yeah


pygaps-dev
TRIAL

5 months ago

wait ill change it


pygaps-dev
TRIAL

5 months ago

that was earlier before u told me the postgres pass was changed


pygaps-dev
TRIAL

5 months ago

but now ive fixed it


pygaps-dev
TRIAL

5 months ago

im redeploying


pygaps-dev
TRIAL

5 months ago

great it worked!


pygaps-dev
TRIAL

5 months ago

thanks!


5 months ago

its online, now theres the new problem -

This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.

5 months ago

you need to be using gunicorn


pygaps-dev
TRIAL

5 months ago

do i need to replace my flask application with gunicorn?


pygaps-dev
TRIAL

5 months ago

or just like setup gunicorn?


pygaps-dev
TRIAL

5 months ago

ive never used gunicorn


5 months ago

you need to run your flask app with gunicorn


pygaps-dev
TRIAL

5 months ago

alrighty


pygaps-dev
TRIAL

5 months ago

thanks for the help


pygaps-dev
TRIAL

5 months ago

u can close this nwo


pygaps-dev
TRIAL

5 months ago

now*


pygaps-dev
TRIAL

5 months ago

!close


pygaps-dev
TRIAL

5 months ago

uh


pygaps-dev
TRIAL

5 months ago

😭


pygaps-dev
TRIAL

5 months ago

is!close


pygaps-dev
TRIAL

5 months ago

what😭


5 months ago

are you using gunicorn now?


pygaps-dev
TRIAL

5 months ago

actually


pygaps-dev
TRIAL

5 months ago

yes


pygaps-dev
TRIAL

5 months ago

but the app failed to load


pygaps-dev
TRIAL

5 months ago

[2025-02-04 19:43:31 +0000] [1] [ERROR] Worker (pid:4) exited with code 4

[2025-02-04 19:43:31 +0000] [1] [ERROR] Shutting down: Master

[2025-02-04 19:43:31 +0000] [1] [ERROR] Reason: App failed to load.


pygaps-dev
TRIAL

5 months ago

😭


pygaps-dev
TRIAL

5 months ago

god help me


5 months ago

what is your start command


pygaps-dev
TRIAL

5 months ago

web: gunicorn -w 4 -b 0.0.0.0:3540 wsgi:app


pygaps-dev
TRIAL

5 months ago

i js did a fix


pygaps-dev
TRIAL

5 months ago

lemme see if it works


pygaps-dev
TRIAL

5 months ago

works!


pygaps-dev
TRIAL

5 months ago

[2025-02-04 19:45:59 +0000] [1] [INFO] Starting gunicorn 23.0.0

[2025-02-04 19:45:59 +0000] [1] [INFO] Listening at: http://0.0.0.0:3540 (1)

[2025-02-04 19:45:59 +0000] [1] [INFO] Using worker: sync

[2025-02-04 19:45:59 +0000] [4] [INFO] Booting worker with pid: 4

[2025-02-04 19:45:59 +0000] [5] [INFO] Booting worker with pid: 5

[2025-02-04 19:45:59 +0000] [6] [INFO] Booting worker with pid: 6

[2025-02-04 19:45:59 +0000] [7] [INFO] Booting worker with pid: 7

pygaps-dev
TRIAL

5 months ago

dont know what this means but it means it works i guess


5 months ago

what was the fix


pygaps-dev
TRIAL

5 months ago

uhh the wsgi.py was empty💀


pygaps-dev
TRIAL

5 months ago

😭


pygaps-dev
TRIAL

5 months ago

i added soem code to it


pygaps-dev
TRIAL

5 months ago

that makes the db tables


pygaps-dev
TRIAL

5 months ago

and


pygaps-dev
TRIAL

5 months ago

runs the app


pygaps-dev
TRIAL

5 months ago

also when im using my server in a js environnement do i need to include the port? i usually dont do the port nnd it works


5 months ago

as long as you are listening on the PORT environment variable


pygaps-dev
TRIAL

5 months ago

yeah


pygaps-dev
TRIAL

5 months ago

you can close this now


5 months ago

!s


Status changed to Solved brody 5 months ago