Note that there are some explanatory texts on larger screens.

plurals
  1. POSQLAlchemy cannot connect to Postgresql on localhost
    primarykey
    data
    text
    <p>I'm sure this is such an easy error to fix, if I could only find where it is. This is the error from the Flask app:</p> <pre><code>11:58:18 web.1 | ERROR:xxxxxx.core:Exception on / [GET] 11:58:18 web.1 | Traceback (most recent call last): 11:58:18 web.1 | File "/Library/Python/2.7/site-packages/flask/app.py", line 1817, in wsgi_app 11:58:18 web.1 | response = self.full_dispatch_request() 11:58:18 web.1 | File "/Library/Python/2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request 11:58:18 web.1 | rv = self.handle_user_exception(e) 11:58:18 web.1 | File "/Library/Python/2.7/site-packages/flask/app.py", line 1381, in handle_user_exception 11:58:18 web.1 | reraise(exc_type, exc_value, tb) 11:58:18 web.1 | File "/Library/Python/2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request 11:58:18 web.1 | rv = self.dispatch_request() 11:58:18 web.1 | File "/Library/Python/2.7/site-packages/flask/app.py", line 1461, in dispatch_request 11:58:18 web.1 | return self.view_functions[rule.endpoint](**req.view_args) 11:58:18 web.1 | File "xxxxxxx/web.py", line 202, in home 11:58:18 web.1 | d = {'featured': cached_apps.get_featured_front_page(), 11:58:18 web.1 | File "/Library/Python/2.7/site-packages/flask_cache/__init__.py", line 245, in decorated_function 11:58:18 web.1 | rv = f(*args, **kwargs) 11:58:18 web.1 | File "/Users/xxxxxxx/Desktop/PythonProjects/xxxxxx/xxxxxx2/xxxxxxx/cache/apps.py", line 35, in get_featured_front_page 11:58:18 web.1 | results = db.engine.execute(sql) 11:58:18 web.1 | File "/Library/Python/2.7/site-packages/flask_sqlalchemy/__init__.py", line 780, in engine 11:58:18 web.1 | return self.get_engine(self.get_app()) 11:58:18 web.1 | File "/Library/Python/2.7/site-packages/flask_sqlalchemy/__init__.py", line 797, in get_engine 11:58:18 web.1 | return connector.get_engine() 11:58:18 web.1 | File "/Library/Python/2.7/site-packages/flask_sqlalchemy/__init__.py", line 470, in get_engine 11:58:18 web.1 | self._sa.apply_driver_hacks(self._app, info, options) 11:58:18 web.1 | File "/Library/Python/2.7/site-packages/flask_sqlalchemy/__init__.py", line 739, in apply_driver_hacks 11:58:18 web.1 | if info.drivername.startswith('mysql'): 11:58:18 web.1 | AttributeError: 'NoneType' object has no attribute 'drivername' </code></pre> <p>From what I've been able to find online, it seems like the problem is that I might not be connecting correctly to the database. The app works fine in Heroku, but not when I run on localhost. </p> <p><code>which psql</code>: </p> <pre><code>/Applications/Postgres.app/Contents/MacOS/bin/psql </code></pre> <p><code>which postgres</code>:</p> <pre><code>/Applications/Postgres.app/Contents/MacOS/bin/postgres </code></pre> <p>Postgres.app is running on 5432. </p> <p>I don't know what else to check. </p> <p>If it's supposed to connect to the same postgres DB on heroku regardless, why would it work on heroku, but not from localhost?</p> <p>Maybe the app on localhost is using a wrong version of Postgres? I've tried uninstalling them (and only leaving Postgres.app), but I'm not sure if there's anything left on my computer that's causing conflicts. How would I check that? I'd appreciate any help. </p> <p><strong>EDIT: More info</strong><br> Segment from the alembic.ini file:</p> <pre><code>[alembic] # path to migration scripts script_location = alembic # template used to generate migration files # file_template = %%(rev)s_%%(slug)s # under Heroku, the line below needs to be inferred from # the environment sqlalchemy.url = postgres://xxxxxxxxxx:xxxxxxxxxxxx@xxxxxx.compute-1.amazonaws.com:5432/xxxxxxxxx # Logging configuration [loggers] keys = root,sqlalchemy,alembic </code></pre> <p>I have a short script that produces the same error: I run <code>python cli.py db_create</code> on </p> <pre><code>#!/usr/bin/env python import os import sys import optparse import inspect import xxxxxxx.model as model from xxxxxx.core import db import xxxxx.web as web from alembic.config import Config from alembic import command def setup_alembic_config(): if "DATABASE_URL" not in os.environ: alembic_cfg = Config("alembic.ini") else: dynamic_filename = "alembic-heroku.ini" with file("alembic.ini.template") as f: with file(dynamic_filename, "w") as conf: for line in f.readlines(): if line.startswith("sqlalchemy.url"): conf.write("sqlalchemy.url = %s\n" % os.environ['DATABASE_URL']) else: conf.write(line) alembic_cfg = Config(dynamic_filename) command.stamp(alembic_cfg, "head") def db_create(): '''Create the db''' db.create_all() # then, load the Alembic configuration and generate the # version table, "stamping" it with the most recent rev: setup_alembic_config() # finally, add a minimum set of categories: Volunteer Thinking, Volunteer Sensing, Published and Draft categories = [] categories.append(model.Category(name="Thinking", short_name='thinking', description='Volunteer Thinking apps')) categories.append(model.Category(name="Volunteer Sensing", short_name='sensing', description='Volunteer Sensing apps')) db.session.add_all(categories) db.session.commit() </code></pre> <p>and I get:</p> <pre><code>Traceback (most recent call last): File "cli.py", line 111, in &lt;module&gt; _main(locals()) File "cli.py", line 106, in _main _methods[method](*args[1:]) File "cli.py", line 33, in db_create db.create_all() File "/Library/Python/2.7/site-packages/flask_sqlalchemy/__init__.py", line 856, in create_all self._execute_for_all_tables(app, bind, 'create_all') File "/Library/Python/2.7/site-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables op(bind=self.get_engine(app, bind), tables=tables) File "/Library/Python/2.7/site-packages/flask_sqlalchemy/__init__.py", line 797, in get_engine return connector.get_engine() File "/Library/Python/2.7/site-packages/flask_sqlalchemy/__init__.py", line 470, in get_engine self._sa.apply_driver_hacks(self._app, info, options) File "/Library/Python/2.7/site-packages/flask_sqlalchemy/__init__.py", line 739, in apply_driver_hacks if info.drivername.startswith('mysql'): AttributeError: 'NoneType' object has no attribute 'drivername' </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload