Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Connecting postgresql with sqlalchemy

I know this might be really a simple question but I don't know the solution. What is happening here when I try to connect to postgresql? I am self learner in this field of database and programming so please be gentle with me. When I try following code:

import sqlalchemy db = sqlalchemy.create_engine('postgresql:///tutorial.db') 

I get this error:

Traceback (most recent call last): File "", line 1, in db = sqlalchemy.create_engine('postgresql:///tutorial.db') File "C:\Python27\lib\site-packages\sqlalchemy-0.7.5dev-py2.7.egg\sqlalchemy\engine__init__.py", line 327, in create_engine return strategy.create(*args, **kwargs) File "C:\Python27\lib\site-packages\sqlalchemy-0.7.5dev-py2.7.egg\sqlalchemy\engine\strategies.py", line 64, in create dbapi = dialect_cls.dbapi(**dbapi_args) File "C:\Python27\lib\site-packages\sqlalchemy-0.7.5dev-py2.7.egg\sqlalchemy\dialects\postgresql\psycopg2.py", line 289, in dbapi psycopg = import('psycopg2') ImportError: No module named psycopg2

Do I need to install psycopg2 separately? What is the correct connection string for postgresql?

like image 403
Jack_of_All_Trades Avatar asked Feb 19 '12 22:02

Jack_of_All_Trades


People also ask

Can we use SQLAlchemy with PostgreSQL?

This SQLAlchemy engine is a global object which can be created and configured once and use the same engine object multiple times for different operations. The first step in establishing a connection with the PostgreSQL database is creating an engine object using the create_engine() function of SQLAlchemy.

Does SQLAlchemy install psycopg2?

Yes, psycopg2 are basically the Python drivers for PostgreSQL that need to be installed separately. I'm honestly baffled that this is not a dependency of SQLAlchemy. If you are going to wrap functionality of another package with yours, you should support it and not require a separate installation.


2 Answers

You would need to pip install SQLAlchemy and pip install psycopg2. An example of a SQLAlchemy connection string that uses psycopg2:

from sqlalchemy import create_engine engine = create_engine('postgresql+psycopg2://user:password@hostname/database_name') 

You could also connect to your database using the psycopg2 driver exclusively:

import psycopg2 conn_string = "host='localhost' dbname='my_database' user='postgres' password='secret'" conn = psycopg2.connect(conn_string) 

However, using the psycopg2 driver to connect does not take advantage of SQLAlchemy.

like image 151
andrew Avatar answered Sep 22 '22 04:09

andrew


Yes, psycopg2 are basically the Python drivers for PostgreSQL that need to be installed separately.

A list of valid connection strings can be found here, yours is a bit off (you need to the username, the password and hostname as specified in the link below):

http://docs.sqlalchemy.org/en/latest/core/engines.html#postgresql

like image 29
Uku Loskit Avatar answered Sep 26 '22 04:09

Uku Loskit