I was creating an abstract base class containing FK, like this : 1 2 3 class MyBase(Base): name = Column(String(30)) fk1 = Column(Integer, ForeignKey('table1.id')) but kept getting the error : 1 2 sqlalchemy.exc.InvalidRequestError: Columns with foreign keys to other columns must be declared as @declared_attr callables on declarative mixin classes. Reading thru the docs was not helpful because the example used for @declared_attr is somewhat different
Why is this interesting to me ? Since LastPass was acquired. I switched to Dashlane, which seems good, but there is this nagging feeling that Dashlane might stop the free version, or something. I had used KeePass long time ago. But the Problem is “syncing” KeePass Web solves (in theory) this problem by supporting Dropbox syncing “out of the box”. All I really need is backup. If you are interested, you can download KeeWeb here
When using fully declared table metadata,use the primary_key=True flag on those columns: 1 2 3 4 5 class Dummy(Base): __tablename__ = "dummy" pk1 = Column(Integer, primary_key=True) pk2 = Column(String, primary_key=True) This will create the following table (in postgres) : testdb=> \d dummy; Table "public.dummy" Column | Type | Modifiers -------+-------------------+----------------------------------------------------- pk1 | integer | not null default nextval('dummy_pk1_seq'::regclass) pk2 | character varying | not null Indexes: "dummy_pkey" PRIMARY KEY, btree (pk1, pk2) See SQLAlchemy documentation
I came across this video by Robin Sharma (The author of great books like “The Monk who sold his Ferrari” and “The leader without title”) It starts with the following quote : The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. George Bernard Shaw Robin goes on to suggest that you install 3 habits during the next 90 days, that set the tone for the next 12 months, so that 2016 can be your greatest year (Rather than a repeat of the last year)
OK, it wasn't really that bad, I could have easily “lived” with it. Background While thinking of creating API documentation for my project, I first considered Markdown syntax (Later I selected ReST, since sphinx supports it better.) I also wanted to keep the documentation in .org files. I was planning to export these .org files to .md , which I can commit to git. .md other users can edit, .org is very emacs specific.