Add article with Alembic foreign key listing/updating
This commit is contained in:
parent
3734bb67d0
commit
cd1316a29a
@ -0,0 +1,34 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Rename automatically named foreign keys with Alembic"
|
||||||
|
date: 2017-01-02 09:41:23
|
||||||
|
tags: [mysql, development, flask, python]
|
||||||
|
published: true
|
||||||
|
author:
|
||||||
|
name: Gergely Polonkai
|
||||||
|
email: gergely@polonkai.eu
|
||||||
|
---
|
||||||
|
|
||||||
|
I have recently messed up my Alembic migrations while modifying my
|
||||||
|
SQLAlchemy models. To start with, I didn’t update the auto-generated
|
||||||
|
migration files to name the indexes/foreign keys a name, so Alembic used its
|
||||||
|
own naming scheme. This is not an actual problem until you have to modify
|
||||||
|
columns that have such constraints. I have since fixed this problem, but
|
||||||
|
first I had to find which column references what (I had no indexes other
|
||||||
|
than primary key back then, so I could go with foreign keys only). Here is
|
||||||
|
a query I put together, mostly using
|
||||||
|
[this article](http://www.binarytides.com/list-foreign-keys-in-mysql/).
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
SELECT constraint_name,
|
||||||
|
CONCAT(table_name, '.', column_name) AS 'foreign key',
|
||||||
|
CONCAT(referenced_table_name, '.', referenced_column_name) AS 'references'
|
||||||
|
FROM information_schema.key_column_usage
|
||||||
|
WHERE referenced_table_name IS NOT NULL AND
|
||||||
|
table_schema = 'my_app';
|
||||||
|
```
|
||||||
|
|
||||||
|
Now I could easily drop such constraints using
|
||||||
|
`alembic.op.drop_constraint('users_ibfk1', 'users', type_='foreignkey')` and
|
||||||
|
recreate them with `alembic.op.create_foreign_key('fk_user_client', 'users',
|
||||||
|
'clients', ['client_id'], ['id'])`
|
Loading…
Reference in New Issue
Block a user