Skip to content

Instantly share code, notes, and snippets.

@agronholm
Created December 5, 2014 18:17
Show Gist options
  • Save agronholm/3370b33316b20c6185bf to your computer and use it in GitHub Desktop.
Save agronholm/3370b33316b20c6185bf to your computer and use it in GitHub Desktop.
Creating tables in a transaction
from sqlalchemy import create_engine, Table, Column, Integer, String, UniqueConstraint
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('postgresql:///testdb', echo=True)
Base = declarative_base()
SALT = dict(
phrase=64,
bytes=32,
)
salt = Table(
'token_salt', Base.metadata,
Column('id', Integer, primary_key=True),
Column('client_id', Integer, nullable=False),
Column('phrase', String(SALT['phrase']), nullable=False),
Column('next_id', Integer),
UniqueConstraint(
'client_id', 'phrase', name='token_salt_unique_client_phrase',
),
)
blah = Table('blah', Base.metadata, Column('test', Integer))
conn = engine.connect()
with conn.begin():
Base.metadata.create_all(conn)
2014-12-05 20:15:09,431 INFO sqlalchemy.engine.base.Engine select version()
2014-12-05 20:15:09,432 INFO sqlalchemy.engine.base.Engine {}
2014-12-05 20:15:09,434 INFO sqlalchemy.engine.base.Engine select current_schema()
2014-12-05 20:15:09,434 INFO sqlalchemy.engine.base.Engine {}
2014-12-05 20:15:09,436 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1
2014-12-05 20:15:09,436 INFO sqlalchemy.engine.base.Engine {}
2014-12-05 20:15:09,437 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1
2014-12-05 20:15:09,437 INFO sqlalchemy.engine.base.Engine {}
2014-12-05 20:15:09,438 INFO sqlalchemy.engine.base.Engine show standard_conforming_strings
2014-12-05 20:15:09,438 INFO sqlalchemy.engine.base.Engine {}
2014-12-05 20:15:09,439 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2014-12-05 20:15:09,440 INFO sqlalchemy.engine.base.Engine select relname from pg_class c join pg_namespace n on n.oid=c.relnamespace where n.nspname=current_schema() and relname=%(name)s
2014-12-05 20:15:09,440 INFO sqlalchemy.engine.base.Engine {'name': 'blah'}
2014-12-05 20:15:09,442 INFO sqlalchemy.engine.base.Engine select relname from pg_class c join pg_namespace n on n.oid=c.relnamespace where n.nspname=current_schema() and relname=%(name)s
2014-12-05 20:15:09,442 INFO sqlalchemy.engine.base.Engine {'name': 'token_salt'}
2014-12-05 20:15:09,443 INFO sqlalchemy.engine.base.Engine
CREATE TABLE blah (
test INTEGER
)
2014-12-05 20:15:09,444 INFO sqlalchemy.engine.base.Engine {}
2014-12-05 20:15:09,451 INFO sqlalchemy.engine.base.Engine
CREATE TABLE token_salt (
id SERIAL NOT NULL,
client_id INTEGER NOT NULL,
phrase VARCHAR(64) NOT NULL,
next_id INTEGER,
PRIMARY KEY (id),
CONSTRAINT token_salt_unique_client_phrase UNIQUE (client_id, phrase)
)
2014-12-05 20:15:09,452 INFO sqlalchemy.engine.base.Engine {}
2014-12-05 20:15:09,462 INFO sqlalchemy.engine.base.Engine COMMIT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment