@@ -11,7 +11,7 @@ meta: MySQL is an open source database often used by Python developers for stori
1111MySQL is an open source [ relational database] ( /databases.html )
1212implementation for storing and retrieving data.
1313
14- <img src =" /img/logos/mysql.png " width =" 100% " alt =" MySQL logo. " class =" technical-diagram " / >
14+ <img src =" /img/logos/mysql.png " width =" 100% " alt =" MySQL logo. " class =" shot " >
1515
1616
1717## MySQL or PostgreSQL?
@@ -72,6 +72,7 @@ drivers along with whether it supports Python 2, 3 or both.
7272## What organizations use MySQL?
7373The database is deployed in production at some of the highest
7474trafficked sites such as
75+ [ Uber] ( https://eng.uber.com/mysql-migration/ ) ,
7576[ Twitter] ( https://blog.twitter.com/2012/mysql-twitter ) ,
7677[ Facebook] ( https://www.facebook.com/notes/facebook-engineering/mysql-and-database-engineering-mark-callaghan/10150599729938920 )
7778and [ many others major organizations] ( http://www.mysql.com/customers/ ) .
@@ -83,10 +84,20 @@ database by
8384[ Wikipedia] ( http://www.zdnet.com/wikipedia-moving-from-mysql-to-mariadb-7000008912/ )
8485and [ Google] ( http://readwrite.com/2013/09/14/google-waves-goodbye-to-mysql-in-favor-of-mariadb ) .
8586MySQL remains a viable database option but I always recommend new Python
86- developers learn PostgreSQL if they do not already know MySQL.
87+ developers learn [ PostgreSQL] ( /postgresql.html ) if they do not already know
88+ MySQL.
8789
8890
8991### Python-specific MySQL resources
92+ The following resources show you how to work with MySQL in your
93+ Python code either directly through SQL queries or less directly with an
94+ [ object-relational mapper (ORM)] ( /object-relational-mappers-orms.html )
95+ like [ SQLAlchemy] ( /sqlalchemy.html ) or the [ Django ORM] ( /django-orm.html ) .
96+
97+ * [ Python MySQL tutorial] ( https://pynative.com/python-mysql-tutorial/ )
98+ uses the MySQL Connector Python library to demonstrate how to run
99+ queries and stored procedures in your Python applications.
100+
90101* [ Python 3.4.0 with MySQL database] ( http://stackoverflow.com/questions/23376103/python-3-4-0-with-mysql-database )
91102 and
92103 [ Python 3 and MySQL] ( http://stackoverflow.com/questions/4960048/python-3-and-mysql )
@@ -97,16 +108,19 @@ developers learn PostgreSQL if they do not already know MySQL.
97108 is a blog post about specific deficiencies in MySQL's implementation that
98109 hinder its usage with Django's ORM.
99110
100- * [ Graph Data From MySQL Database in Python] ( http://moderndata.plot.ly/graph-data-from-mysql-database-in-python/ )
101- is an interesting study with code of how to pull data out of MySQL and graph
102- the data with Plotly.
103-
104111* [ MySQL Python tutorial] ( http://zetcode.com/db/mysqlpython/ ) uses the
105112 MySQLdb driver to connect to a MySQL server instance and shows some
106113 examples for inserting and querying data.
107114
115+ * [ Graph Data From MySQL Database in Python] ( http://moderndata.plot.ly/graph-data-from-mysql-database-in-python/ )
116+ is an interesting study with code of how to pull data out of MySQL and graph
117+ the data with Plotly.
118+
108119
109120### General MySQL resources
121+ There are many programming language agnostic tutorials for MySQL.
122+ A handful of the best of these tutorials are listed below.
123+
110124* [ How to Install and Use MySQL on Ubuntu 16.04] ( /blog/install-mysql-ubuntu-1604.html )
111125 is a quick tutorial for getting up and running on Ubuntu Linux.
112126
@@ -117,8 +131,8 @@ developers learn PostgreSQL if they do not already know MySQL.
117131 doesn't have the most original title but it's a good walkthrough of your
118132 first few steps in MySQL for creating users and working with tables.
119133
120- * [ Pinterest open sourced many of their MySQL tools ] ( https://engineering.pinterest.com/blog/open-sourcing-pinterest-mysql-management-tools )
121- to manage instances of the database .
134+ * [ mycli ] ( https://www.mycli.net/ ) is a command line interface for MySQL
135+ that includes command completion and other super handy features .
122136
123137* [ Bye Bye MySQL & MongoDB, Guten Tag PostgreSQL] ( https://www.userlike.com/en/blog/2015/10/09/bye-by-mysql-and-mongodb-guten-tag-postgresql )
124138 goes into details for why the company Userlike migrated from their MySQL
@@ -128,11 +142,6 @@ developers learn PostgreSQL if they do not already know MySQL.
128142 a story about how one company went through dramatic growth and had to keep
129143 up with it by quickly scaling their MySQL database.
130144
131- * [ Tracker: Ingesting MySQL data at scale - (Part 1)] ( https://engineering.pinterest.com/blog/tracker-ingesting-mysql-data-scale-part-1 )
132- is the first blog post in a series explaining Pinterest's tool to
133- load large volumes of data into MySQL from other internal sources
134- such as Kafka and Redis.
135-
136145* [ Monitoring MySQL metrics] ( https://www.datadoghq.com/blog/monitoring-mysql-performance-metrics/ )
137146 is the first of a three part series, with the other parts on
138147 [ collecting metrics] ( https://www.datadoghq.com/blog/collecting-mysql-statistics-and-metrics/ )
@@ -141,8 +150,21 @@ developers learn PostgreSQL if they do not already know MySQL.
141150 metrics you should be collecting and monitoring in your production
142151 database along with the purpose for why those metrics are important.
143152
144- * [ gh-ost] ( https://github.com/github/gh-ost ) is a schema migration
153+ * [ gh-ost] ( https://githubengineering.com/gh-ost-github-s-online-migration-tool-for-mysql/ )
154+ ([ source code] ( https://github.com/github/gh-ost ) ) is a schema migration
145155 tool built by GitHub and open sourced to the development community.
146156 The advantages of gh-ost are sustainable workloads on the master node
147157 to allow it to keep serving inbound query requests and the ability
148- to pause the migration.
158+ to pause the migration. The post on how to use gh-ost pairs nicely with
159+ GitHub's detailed write-up on how they perform backups, failover and
160+ schema migrations in
161+ [ MySQL infrastructure testing automation at GitHub] ( https://githubengineering.com/mysql-testing-automation-at-github/ ) .
162+
163+ * The
164+ [ unofficial MySQL optimizers guide] ( http://www.unofficialmysqlguide.com/ )
165+ is intended for experienced developers who need to get better performance
166+ out of MySQL for their specific use cases.
167+
168+ * [ The Ultimate Postgres vs MySQL Blog Post] ( https://dev.to/dmfay/the-ultimate-postgres-vs-mysql-blog-post-1l5f )
169+ provides comparisons of data types, default values, arrays, joins and
170+ many other differences between MySQL and PostgreSQL.
0 commit comments