In [1]:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

In [7]:
engine = create_engine('postgresql://postgres:test@localhost:5432/postgres')

In [8]:
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

In [9]:
from sqlalchemy import Column, Integer, String

In [10]:
class User(Base):
    __tablename__ = 'users'
    
    id = Column(Integer, primary_key = True)
    name = Column(String)
    fullname = Column(String)
    password = Column(String)
    
    def __repr__(self):
        return "<User({name}, fullname={fullname}, password={password})>".format(
        name = self.name, fullname = self.fullname, password = self.password)

In [11]:
User.__table__


Out[11]:
Table('users', MetaData(bind=None), Column('id', Integer(), table=<users>, primary_key=True, nullable=False), Column('name', String(), table=<users>), Column('fullname', String(), table=<users>), Column('password', String(), table=<users>), schema=None)

In [12]:
Base.metadata.create_all(engine)

In [5]:
engine = create_engine('postgresql://postgres:test@localhost:5432/postgres')
session = sessionmaker(bind=engine)()

In [6]:
session.connection()


Out[6]:
<sqlalchemy.engine.base.Connection at 0x7fb85005c5d0>

In [5]:
session.commit()

In [6]:
session.autocommit = True
session.execute('CREATE DATABASE test')


---------------------------------------------------------------------------
OperationalError                          Traceback (most recent call last)
<ipython-input-6-e77a6484d8cd> in <module>()
      1 session.autocommit = True
----> 2 session.execute('CREATE DATABASE test')

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/orm/session.pyc in execute(self, clause, params, mapper, bind, **kw)
   1021 
   1022         return self._connection_for_bind(
-> 1023             bind, close_with_result=True).execute(clause, params or {})
   1024 
   1025     def scalar(self, clause, params=None, mapper=None, bind=None, **kw):

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/orm/session.pyc in _connection_for_bind(self, engine, execution_options, **kw)
    885         if self.transaction is not None:
    886             return self.transaction._connection_for_bind(
--> 887                 engine, execution_options)
    888         else:
    889             conn = engine.contextual_connect(**kw)

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/orm/session.pyc in _connection_for_bind(self, bind, execution_options)
    332                         "given Connection's Engine")
    333             else:
--> 334                 conn = bind.contextual_connect()
    335 
    336         if execution_options:

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in contextual_connect(self, close_with_result, **kwargs)
   2032         return self._connection_cls(
   2033             self,
-> 2034             self._wrap_pool_connect(self.pool.connect, None),
   2035             close_with_result=close_with_result,
   2036             **kwargs)

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in _wrap_pool_connect(self, fn, connection)
   2071             if connection is None:
   2072                 Connection._handle_dbapi_exception_noconnection(
-> 2073                     e, dialect, self)
   2074             else:
   2075                 util.reraise(*sys.exc_info())

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in _handle_dbapi_exception_noconnection(cls, e, dialect, engine)
   1401             util.raise_from_cause(
   1402                 sqlalchemy_exception,
-> 1403                 exc_info
   1404             )
   1405         else:

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/util/compat.pyc in raise_from_cause(exception, exc_info)
    197             exc_info = sys.exc_info()
    198         exc_type, exc_value, exc_tb = exc_info
--> 199         reraise(type(exception), exception, tb=exc_tb)
    200 
    201 if py3k:

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in _wrap_pool_connect(self, fn, connection)
   2067         dialect = self.dialect
   2068         try:
-> 2069             return fn()
   2070         except dialect.dbapi.Error as e:
   2071             if connection is None:

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/pool.pyc in connect(self)
    374         """
    375         if not self._use_threadlocal:
--> 376             return _ConnectionFairy._checkout(self)
    377 
    378         try:

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/pool.pyc in _checkout(cls, pool, threadconns, fairy)
    706     def _checkout(cls, pool, threadconns=None, fairy=None):
    707         if not fairy:
--> 708             fairy = _ConnectionRecord.checkout(pool)
    709 
    710             fairy._pool = pool

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/pool.pyc in checkout(cls, pool)
    478     @classmethod
    479     def checkout(cls, pool):
--> 480         rec = pool._do_get()
    481         try:
    482             dbapi_connection = rec.get_connection()

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/pool.pyc in _do_get(self)
   1047                 except:
   1048                     with util.safe_reraise():
-> 1049                         self._dec_overflow()
   1050             else:
   1051                 return self._do_get()

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.pyc in __exit__(self, type_, value, traceback)
     58             exc_type, exc_value, exc_tb = self._exc_info
     59             self._exc_info = None   # remove potential circular references
---> 60             compat.reraise(exc_type, exc_value, exc_tb)
     61         else:
     62             self._exc_info = None   # remove potential circular references

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/pool.pyc in _do_get(self)
   1044             if self._inc_overflow():
   1045                 try:
-> 1046                     return self._create_connection()
   1047                 except:
   1048                     with util.safe_reraise():

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/pool.pyc in _create_connection(self)
    321         """Called by subclasses to create a new ConnectionRecord."""
    322 
--> 323         return _ConnectionRecord(self)
    324 
    325     def _invalidate(self, connection, exception=None):

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/pool.pyc in __init__(self, pool)
    447     def __init__(self, pool):
    448         self.__pool = pool
--> 449         self.connection = self.__connect()
    450         self.finalize_callback = deque()
    451 

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/pool.pyc in __connect(self)
    600         try:
    601             self.starttime = time.time()
--> 602             connection = self.__pool._invoke_creator(self)
    603             self.__pool.logger.debug("Created new connection %r", connection)
    604             return connection

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/engine/strategies.pyc in connect(connection_record)
     95                         if connection is not None:
     96                             return connection
---> 97                 return dialect.connect(*cargs, **cparams)
     98 
     99             creator = pop_kwarg('creator', connect)

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/sqlalchemy/engine/default.pyc in connect(self, *cargs, **cparams)
    375 
    376     def connect(self, *cargs, **cparams):
--> 377         return self.dbapi.connect(*cargs, **cparams)
    378 
    379     def create_connect_args(self, url):

/home/mattmcd/Work/Projects/Envs/analysis/local/lib/python2.7/site-packages/psycopg2/__init__.pyc in connect(dsn, database, user, password, host, port, connection_factory, cursor_factory, async, **kwargs)
    162                 for (k, v) in items])
    163 
--> 164     conn = _connect(dsn, connection_factory=connection_factory, async=async)
    165     if cursor_factory is not None:
    166         conn.cursor_factory = cursor_factory

OperationalError: (psycopg2.OperationalError) server closed the connection unexpectedly
	This probably means the server terminated abnormally
	before or while processing the request.

In [14]:
from sqlalchemy_utils.functions import create_database

In [15]:
create_database('postgresql://postgres:test@localhost:5432/mydb')

In [ ]: