Internship, Day One; Standing Up MySQL-Python

akira
4 min readOct 9, 2019

I was recently granted an internship opportunity with the ADL Software Foundation in Bend, Oregon, through putting myself out there in my local tech community. At a local JavaScript meetup (BendJS-we have great pizza and lightning talks) there is a brief section of “who is looking for a job” and “who is hiring people”. I let it be known that I was looking to break out of my rut of learning entirely in a bubble and wanted practice working on projects with other living and breathing human beings, but I still did not feel anywhere close to applying for a junior position. Not three days after I started putting myself out there, I had a conversation with Jason Weiner, the head of ADL and also the VP of Bend Tech, and accepted an offer with ADL to intern; learning the ins and outs of a DevOps pipeline and focusing on Python and MySQL (among other things) It was incredible! I’m so thankful to Jason and the folks at Bend Tech and Bend JS, and very pleased with my progress.

snek

I want to highlight a few things I’ve learned from day one, both for posterity, but also as a way to explain my thought process to myself as I go along this work. Perhaps some of the things I discuss will also be of use to others.

So, I have not worked in MySQL before. I’ve worked in Postgres, and have used SQL commands, but those were quickly replaced by Active Record when I was in school. I loved SQL and was pretty bummed that we went over it so fast; I even did extra SQL on the side for fun because I loved it so much.

What I learned about MySQL is that its incredibly different from Postgres! My first impressions are that it is not as beginner-friendly, so I’m glad I had some experience with it before. If I was just wrapping my entire head around how databases work, I would use Postgres. That being said, it has a feel of being lightweight and fast. I loved it.

One note I will add here; is Homebrew is my friend. I downloaded the community MySQL package directly from the Oracle website and spent a LOT of time trying to figure out how to get everything up and running. Then Jason came over and was like “oh, have you tried using Homebrew”? Duh. Installed in 5 minutes.

homebrew is my homeboy

The next huge challenge that I’m hacking away at is standing up a server using MySQL-Python. DANG this is a challenge! I’m confident in my ability to rise to challenges, and it was super fun, but, it is not easy! The main challenge points are

  • this is an old technology with very little documentation, and
  • because there is not much documentation, your guess is just as good as anyone else’s, and
  • you need to set the paths to your config file and I don’t know a lot about paths, and
  • there's a bug in the mysql_config file that you have to manually go in and fix, and
  • there’s a very specific order of operations that can make or break if this package downloads correctly, mainly to do with a technology I was previously unfamiliar with called a connector, and
  • even after surmounting all these hurdles, I still haven’t figured it all out 💩

Luckily, I’m not alone. This one is really tough to get through and I am not the only one who has a really hard time of it. I’m taking notes but don’t want to publish any sort of guide until I really have it figured out. However, here are some great resources that did help push me in the right direction:

And last, but not least, the infamous technology in question. I’m excited about what it can do once I get it up and running, but wow, its…its rough.

And a last-minute tidbit for all coders out there! If you have a table in MySQL and you have set one of the values to auto-increment, when you use INSERT into said value, you can’t leave it blank. You must put NULL (no quotes!) for that value, otherwise, you will have an error.

Alright, that's it for now-happy coding!

--

--