Python Script for migrating from Wordpress to Hugo

| blogging | python | snippets |

Here’s a simple script that I wrote in python for helping to migrate from a wordpress blog to a static hugo site.

from dataclasses import dataclass
from datetime import datetime

import mysql.connector
from jinja2 import Template
from slugify import slugify


@dataclass 
class Post:
    date:datetime
    title:str
    content:str
    filename:str

posts = []

try:

    conn = mysql.connector.connect(
        host='localhost',
        port=3306,
        database='wordpress',
        user='wp_admin',
        password='$YOUR_DB_PASSWORD'
    )

    cursor = conn.cursor()

    query = """
    select post_date, post_title, post_content from $YOUR_POSTS_TABLE 
    where post_type = 'post' 
    order by post_date
    """
    cursor.execute(query)

    rows = cursor.fetchall()

    for row in rows:
        posts.append(Post(row[0], row[1], row[2], slugify(row[1])))

    template = Template("""+++
title = "{{title}}"
date = {{date}}
draft = false
tags = ['']
+++
                    
{{content}}
    """)

    for post in posts:
        path = f"import/{post.date.year}-{post.filename}.md"
        with open(path, "w") as f:
            f.write(
                template.render(
                    title=post.title,
                    date=post.date.strftime('%Y-%m-%dT%H:%M:%S%z'),
                    content=post.content
                )
            )

    print([post.filename for post in posts])

except mysql.connector.Error as e:
    print(e)

finally:
    cursor.close()
    conn.close()

Thank you for reading! Share your thoughts with me on bluesky, mastodon, or via email.

Check out some more stuff to read down below.

Most popular posts this month

Recent Favorite Blog Posts

This is a collection of the last 8 posts that I bookmarked.

Articles from blogs I follow around the net

Pluralistic: Demand destruction vs fuel-superceding infrastructure (04 May 2026)

Today's links Demand destruction vs fuel-superceding infrastructure: Will Trump hormuz us into the full Gretacene? Hey look at this: Delights to delectate. Object permanence: Beck, Scientologist; Citizen journalism; Podcast-killing treaty; US x Kiwi copyri...

via Pluralistic: Daily links from Cory Doctorow May 4, 2026

1993 communal internet shaped me: https://sive.rs/netizen

1993 communal internet shaped me: https://sive.rs/netizen

via Derek Sivers May 4, 2026

The 1990s called and they want their dialog box back

This is perhaps my favourite feature in Lightroom. You press ⇧T, you draw a few lines, and presto – your photo is now even: This is doubly magical to me. The first part is that this is even possible – that you can straighten the photo in both dimensions af...

via Unsung May 3, 2026

Generated by openring