47 captures
10 Jan 2016 - 10 Dec 2025
May JUN Jul
16
2021 2022 2023
success
fail

About this capture

COLLECTED BY

Collection: Save Page Now

TIMESTAMPS

The Wayback Machine - http://web.archive.org/web/20220616224454/https://www.fullstackpython.com/mysql.html
 

Full Stack Python
All topics | Blog | Supporter's Edition | @fullstackpython | Facebook | What's new?

MySQL






MySQL is an open source relational database implementation for storing and retrieving data.

MySQL logo.

MySQL or PostgreSQL?


MySQL is a viable open source database implementation for Python web applications. MySQL has a slightly easier initial learning curve than PostgreSQL. However, PostgreSQL's design is often preferred by Python web developers, especially when data migrations are run as an application evolves.

MySQL is an implementation of the relational database concept. Learn more in the data chapter or view the table of contents for all topics.

Python Drivers for MySQL


Accessing MySQL from a Python application requires a database driver (also called a "connector"). While it is possible to write a driver as part of your application, in practice most developers use an existing open source driver.

There was a major issue with MySQL drivers since the introduction of Python 3. One of the most popular libraries called MySQLdb did not work in its existing form with Python 3 and there were no plans to update it. Therefore a fork of MySQLdb named mysqlclient added Python 3 compatibility. 

The mysqlclient fork was good in that existing MySQLdb users could drop mysqlclient into existing projects that were upgrading to Python 3. However, the fork often causes confusion when searching for which Python driver to use with MySQL. Many developer simply decide to use PostgreSQL because there is better support for Python drivers in the PostgreSQL community. 

With that driver support context in mind, it's absolutely possible to build a Python 3 web application with MySQL as a backend. Here is a list of drivers along with whether it supports Python 2, 3 or both.



mysqlclient is a fork of MySQLdb that supports Python 2 and 3.



MySQL Connector is Oracle's "official" (Oracle currently owns MySQL) Python connector. The driver supports Python 2 and 3, just make sure to check the version guide for what releases work with which Python versions.



MySQLdb supports Python 2 and was frequently used by Python web applications before the mass migration to Python 3 began.



PyMySQL is a pure Python (no C low-level code) implementation that attempts to be a drop-in replacement for MySQLdb. However, some MySQL APIs are not supported by the driver so whether or not your application can use this connector will depend on what you're building.


What organizations use MySQL?


The database is deployed in production at some of the highest trafficked sites such as Uber, Twitter, Facebook and many others major organizations. However, since MySQL AB, the company that developed MySQL, was purchased by Sun Microsystems (which was in turn purchased by Oracle), there have been major defections away from the database by Wikipedia and Google. MySQL remains a viable database option but I always recommend new Python developers learn PostgreSQL if they do not already know MySQL.

Python-specific MySQL resources


The following resources show you how to work with MySQL in your Python code either directly through SQL queries or less directly with an object-relational mapper (ORM) like SQLAlchemy or the Django ORM.



Python MySQL tutorial uses the MySQL Connector Python library to demonstrate how to run queries and stored procedures in your Python applications.



Python 3.4.0 with MySQL database and Python 3 and MySQL provide context for the commonly asked question about which database MySQL driver to use with Python 3.



Terrible Choices: MySQL is a blog post about specific deficiencies in MySQL's implementation that hinder its usage with Django's ORM.



MySQL Python tutorial uses the MySQLdb driver to connect to a MySQL server instance and shows some examples for inserting and querying data.


General MySQL resources


There are many programming language agnostic tutorials for MySQL. A handful of the best of these tutorials are listed below.



How to Install and Use MySQL on Ubuntu 16.04 is a quick tutorial for getting up and running on Ubuntu Linux.



28 Beginner's Tutorials for Learning about MySQL Databases is a curated collection on various introductory MySQL topics.



A Basic MySQL Tutorial doesn't have the most original title but it's a good walkthrough of your first few steps in MySQL for creating users and working with tables.



mycli is a command line interface for MySQL that includes command completion and other super handy features.



Bye Bye MySQL & MongoDB, Guten Tag PostgreSQL goes into details for why the company Userlike migrated from their MySQL database setup to PostgreSQL.



MySQL sharding at Quora provides details behind Quora's at-scale infrastructure and how their MySQL sharding evolved over time.



Growing up with MySQL is a story about how one company went through dramatic growth and had to keep up with it by quickly scaling their MySQL database.



Monitoring MySQL metrics is the first of a three part series, with the other parts on collecting metrics and monitoring & collecting specifically with the DataDog tool. The series explains what metrics you should be collecting and monitoring in your production database along with the purpose for why those metrics are important.



gh-ost (source code) is a schema migration tool built by GitHub and open sourced to the development community. The advantages of gh-ost are sustainable workloads on the master node to allow it to keep serving inbound query requests and the ability to pause the migration. The post on how to use gh-ost pairs nicely with GitHub's detailed write-up on how they perform backups, failover and schema migrations in MySQL infrastructure testing automation at GitHub.



The unofficial MySQL optimizers guide is intended for experienced developers who need to get better performance out of MySQL for their specific use cases.



The Ultimate Postgres vs MySQL Blog Post provides comparisons of data types, default values, arrays, joins and many other differences between MySQL and PostgreSQL.


Learn more about data or go to web frameworks?





Tell me about standard relational databases.
 




What're these NoSQL data stores hipster developers keep talking about?
 




I want to learn how to code a Python web application using a framework.
 







Table of Contents



1. Introduction 2. Development Environments 3. Data Relational Databases PostgreSQL MySQL SQLite Object-relational Mappers SQLAlchemy Peewee Django ORM Pony ORM NoSQL Data Stores Redis MongoDB Apache Cassandra Neo4j Data analysis pandas SciPy & NumPy Data visualization Bokeh d3.js Matplotlib Markup Languages Markdown reStructuredText Oracle 4. Web Development 5. Deployment 6. DevOps Changelog What Full Stack Means About the Author Future Directions Page Statuses ...or view the full table of contents.



Full Stack Python


Full Stack Python is an open book that explains concepts in plain language and provides helpful resources for those topics.

Updates via Twitter & Facebook.



Chapters



1. Introduction 2. Development Environments 3. Data » MySQL 4. Web Development 5. Deployment 6. DevOps Changelog What Full Stack Means About the Author Future Directions Page Statuses ...or view the full table of contents.

 



Matt Makai 2012-2022