EasyMySQL just hit 25,000 downloads
When I published EasyMySQL on PyPI, I genuinely did not know if anyone besides me would ever run easymysql. I built it to scratch my own itch — a simple wrapper around MySQL queries so I wouldn’t have to write the same boilerplate every time I started a new Python project. Publishing it felt more like archiving it in a public place than launching a product.
This week, the PyPI download counter crossed 25,000. That number took a while to sink in.
Where the idea came from
Years before Python was my main language, I was writing PHP. I had a small utility class I carried from project to project that let me interact with a MySQL database without repeating connection setup, cursor handling, and manual query building every single time:
$db->insert('users', ['name' => 'Alice', 'email' => '[email protected]']);
$users = $db->select('users', ['active' => 1]);
When I moved to Python seriously, I kept reaching for something similar and not finding exactly what I wanted. Libraries like SQLAlchemy are powerful, but they bring a lot of concepts — sessions, models, migrations — that are overkill when you just need to run a few queries in a script or a small application. So I wrote EasyMySQL: the same idea, ported to Python, cleaned up, and published properly.
from easymysql.mysql import mysql
db = mysql('localhost', 'root', 'password', 'mydb')
db.insert('users', {'name': 'Alice', 'email': '[email protected]'})
users = db.select('users', {'active': 1})
That is the entire API for the most common use case. No sessions. No ORM. No configuration files.
What 25,000 downloads actually means
PyPI counts every pip install — CI pipelines, Docker image builds, fresh virtualenvs, reinstalls. So 25,000 is not 25,000 distinct people. But even accounting for that, it is a number I never projected when I wrote the first commit.
It also tells me the library is genuinely useful to someone other than me. People are pulling it into their projects, their scripts, their pipelines. That is the part that matters.
What I learned along the way
A few things surprised me over the course of reaching this milestone:
Documentation drives adoption. The biggest jumps in weekly downloads correlated not with code changes but with documentation improvements. If someone lands on your PyPI page and cannot figure out how to use it in 30 seconds, they move on.
Simple scope is a feature. EasyMySQL does four things: insert, select, update, delete. That constraint has kept the API stable and the maintenance burden low. People know exactly what they’re getting.
Issues are a good sign. The first bug report felt bad. Now I see them as proof that people are using the library seriously enough to investigate when something doesn’t work the way they expected.
What’s next
EasyMySQL stays focused on its core purpose, but there are a few improvements in the pipeline:
- Better error messages when the connection fails or a query is malformed
- Support for transactions (
begin,commit,rollback) - A
count()helper for the commonSELECT COUNT(*) FROM ...pattern - More real-world examples in the documentation
If you use EasyMySQL and have a feature request or found a bug, open an issue on GitHub. Every bit of feedback helps shape what comes next.
Thank you to everyone who has installed, used, and contributed to the library. Here’s to the next 25,000.