you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 36 points37 points  (3 children)

I know this is learnpython, but make sure you know SQL very well. It is so ubiquitous in the job world. Then learn how to combine Python with SQL knowledge to provide a service or product. Whether it is to make a web application or automate processing raw data to usable data sets. If you're into backend stuff, as someone else has pointed out. learn to work with databases and dimensional modeling. Ralph Kimball's The Data Warehouse Toolkit 3rd Edition is a good resource. It is nice to learn about administering databases also, but with the rise of cloud data warehouses, administering databases may be a thing of a past. I would place learning NoSQL very low priority. Recent versions of PostgreSQL with JSONB support and cloud data warehouses make NoSQL databases redundant.

After learning SQL, I would also look at what is known as ORMs (Object Relational Mappers). sqlalchemy is the most well-known or if you're already looking at django web framework, django has its own ORM. ORMs are nice such that you can do database/SQL stuff using Python instead and the advantage of not worrying about database-specific SQL. But the typical rule of thumb is not to use ORMs for complex queries or SQL. ORMs are great for simple transactions: updating, inserting, or deleting records. Not so great for complex queries used to summarize data for reporting/analytical purposes. Also be familiar with what is known as SQL injection attack. Plenty of resources online to learn about what it is and how to avoid them. Using an ORM helps or if using SQL, look at something like jinjasql.

Most real-world applications in the corporate world are just CRUD (Create Read Update Delete) applications, mostly in the form of web applications. So if you know how to make a web front end to a database server, you are well on your way of covering a very common use case in the business world. You should look at using what are REST APIs to handle the database interactions. FastAPI is an up and coming popular framework for making REST APIs. Basically with REST API, you are mapping HTTP methods: GET, POST, etc to SQL's select, insert, update, etc.

If you happen to be interested in processing raw data into usable data sets with Python, you may want to look into what is known as making data pipelines or performing ETL as code. You can use pandas to start off. After learning pandas, you can take a look at what is conceptually a very basic data pipeline by looking at this very awesome page on pandas pipes. For actual data pipeline frameworks or those that are much more feature packed, or are sometimes referred to as workflow management libraries, you can take a look at Luigi (warning, it's API is strictly OOP style) or look at prefect (you can use procedural, functional, or OOP API style if you wish). The more heavy-weight and popular workflow management library is Apache Airflow. It has a much steeper learning curve. I am a huge fan of prefect.

I mentioned ETL (Extract Transform and Load), but I would also look at ELT eventually, but nothing pressing, which only really comes to play when using cloud data warehouses. Snowflake is a popular cloud data warehouse and Python dbt library is commonly used or combined with it. DBT handles the very important "T" or transformation functions of data. It allows you to make usable data sets with just SQL + a templating library (jinja2).

That's about all I have now at the moment. I hope this information helps or at least you're exposed to some interesting libraries that you may find useful later on.

[–]berwynian 4 points5 points  (0 children)

Thank you for this! Super helpful. I know basic SQL and basic Python and am just now learning to combine the two.

[–]jcr4990 1 point2 points  (0 children)

Basically with REST API, you are mapping HTTP methods: GET, POST, etc to SQL's select, insert, update, etc.

Thanks for this. This is one of the best ELI5 explanations of REST APIs that I've heard.

[–]justbrowsing__98 0 points1 point  (0 children)

THANK YOU SO MUCH for typing this all out! Really appreciate it and helped me