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

a year ago

Title

Solved

131 Replies

pygaps-dev
TRIALOP

a year ago

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


a year ago

Environment variables




pygaps-dev
TRIALOP

a year ago

os.getenv('DB_NAME') ?


pygaps-dev
TRIALOP

a year ago

thats just an example btw


a year ago

```import os

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


pygaps-dev
TRIALOP

a year ago

Okay so


a year ago

don't actually print your secrets


pygaps-dev
TRIALOP

a year 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
TRIALOP

a year ago

?


a year ago

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


a year ago

my python knowledge is sketchy at best


pygaps-dev
TRIALOP

a year ago

Oh


pygaps-dev
TRIALOP

a year ago

Lemme try it rq


pygaps-dev
TRIALOP

a year ago

Hmph


pygaps-dev
TRIALOP

a year ago

I tried it


pygaps-dev
TRIALOP

a year ago

@BillyDotWS


pygaps-dev
TRIALOP

a year ago

I'm getting an error


pygaps-dev
TRIALOP

a year 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?

a year ago

are you positive it's running on 5000?


a year ago

normally runs on 5432 by default


a year ago

  • are you running this on railway or locally?


a year ago

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


pygaps-dev
TRIALOP

a year ago

yes


pygaps-dev
TRIALOP

a year ago

the postgresql im running it on railway


a year ago

and your service?


a year ago

or are you running the service locally


pygaps-dev
TRIALOP

a year ago

python server too


pygaps-dev
TRIALOP

a year ago

on railway


pygaps-dev
TRIALOP

a year ago

the same project


pygaps-dev
TRIALOP

a year ago

two diff services


pygaps-dev
TRIALOP

a year 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
TRIALOP

a year ago

thats what i


pygaps-dev
TRIALOP

a year ago

usualyl do


pygaps-dev
TRIALOP

a year ago

in my python apis


a year ago

can you change port back to 5432 on both


pygaps-dev
TRIALOP

a year ago

sure


a year ago

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


a year 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
TRIALOP

a year ago

alrightyy


pygaps-dev
TRIALOP

a year ago

im redeploying the python api


pygaps-dev
TRIALOP

a year 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"

a year ago

progress!


pygaps-dev
TRIALOP

a year ago

I see that the password authentication failed


a year ago

so, is the password correct


pygaps-dev
TRIALOP

a year ago

I linked the password


a year ago

and you didn't change that, right?


pygaps-dev
TRIALOP

a year ago

1336411510326431700


pygaps-dev
TRIALOP

a year ago

dont know why


pygaps-dev
TRIALOP

a year ago

nope


pygaps-dev
TRIALOP

a year ago

i didnt change it


a year ago

check PGPASSWORD is filled with a print


a year ago

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


pygaps-dev
TRIALOP

a year ago

what do you mean filled with a print?


a year ago

print(os.getenv('PGPASSWORD'))


a year ago

or a null check


pygaps-dev
TRIALOP

a year ago

it has random letters and numbers


pygaps-dev
TRIALOP

a year ago

and does not have a print


a year ago

check it's in your container runtime


pygaps-dev
TRIALOP

a year ago

oh


a year ago

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


pygaps-dev
TRIALOP

a year ago

wait


pygaps-dev
TRIALOP

a year 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
TRIALOP

a year ago

this means both the port and authentication failed?


a year ago

nope, just auth


pygaps-dev
TRIALOP

a year ago

port 5432 failed: FATAL


a year ago

if you see auth failed, the connection is fine


a year ago

that's just the address details


pygaps-dev
TRIALOP

a year ago

oh


pygaps-dev
TRIALOP

a year ago

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


a year ago

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


pygaps-dev
TRIALOP

a year 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
TRIALOP

a year ago

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


pygaps-dev
TRIALOP

a year ago

?


pygaps-dev
TRIALOP

a year ago

@BillyDotWS


pygaps-dev
TRIALOP

a year ago

any idea?


a year 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
TRIALOP

a year ago

Alrighty


a year ago

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


pygaps-dev
TRIALOP

a year ago

oh alright


a year ago

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


pygaps-dev
TRIALOP

a year ago

oh


pygaps-dev
TRIALOP

a year ago

yeah


pygaps-dev
TRIALOP

a year ago

wait ill change it


pygaps-dev
TRIALOP

a year ago

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


pygaps-dev
TRIALOP

a year ago

but now ive fixed it


pygaps-dev
TRIALOP

a year ago

im redeploying


pygaps-dev
TRIALOP

a year ago

great it worked!


pygaps-dev
TRIALOP

a year ago

thanks!


a year 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.

a year ago

you need to be using gunicorn


pygaps-dev
TRIALOP

a year ago

do i need to replace my flask application with gunicorn?


pygaps-dev
TRIALOP

a year ago

or just like setup gunicorn?


pygaps-dev
TRIALOP

a year ago

ive never used gunicorn


a year ago

you need to run your flask app with gunicorn


pygaps-dev
TRIALOP

a year ago

alrighty


pygaps-dev
TRIALOP

a year ago

thanks for the help


pygaps-dev
TRIALOP

a year ago

u can close this nwo


pygaps-dev
TRIALOP

a year ago

now*


pygaps-dev
TRIALOP

a year ago

!close


pygaps-dev
TRIALOP

a year ago

uh


pygaps-dev
TRIALOP

a year ago

😭


pygaps-dev
TRIALOP

a year ago

is!close


pygaps-dev
TRIALOP

a year ago

what😭


a year ago

are you using gunicorn now?


pygaps-dev
TRIALOP

a year ago

actually


pygaps-dev
TRIALOP

a year ago

yes


pygaps-dev
TRIALOP

a year ago

but the app failed to load


pygaps-dev
TRIALOP

a year 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
TRIALOP

a year ago

😭


pygaps-dev
TRIALOP

a year ago

god help me


a year ago

what is your start command


pygaps-dev
TRIALOP

a year ago

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


pygaps-dev
TRIALOP

a year ago

i js did a fix


pygaps-dev
TRIALOP

a year ago

lemme see if it works


pygaps-dev
TRIALOP

a year ago

works!


pygaps-dev
TRIALOP

a year 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
TRIALOP

a year ago

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


a year ago

what was the fix


pygaps-dev
TRIALOP

a year ago

uhh the wsgi.py was empty💀


pygaps-dev
TRIALOP

a year ago

😭


pygaps-dev
TRIALOP

a year ago

i added soem code to it


pygaps-dev
TRIALOP

a year ago

that makes the db tables


pygaps-dev
TRIALOP

a year ago

and


pygaps-dev
TRIALOP

a year ago

runs the app


pygaps-dev
TRIALOP

a year 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


a year ago

as long as you are listening on the PORT environment variable


pygaps-dev
TRIALOP

a year ago

yeah


pygaps-dev
TRIALOP

a year ago

you can close this now


a year ago

!s


Status changed to Solved brody about 1 year ago


Loading...