SQL <> Python cell auto-conversion
problem: I was attempting to solve this issue and found that cells were automatically converting to different cell types.
Auto conversion from Python --> SQL
* To mitigate some downstream dependency issues, I first tried converting the SQL cell to python (e.g, "df_result = mo.sql(f""" query """)") , and then would save the file, and then reset the Kernel. Post kernel reset, that cell that I converted to Python was back to being a SQL file.
* I resolved this auto-conversion by making df_result local (_df_result) and then df_result = _df_result.copy().
* Even though both were outputting the same DF, the python version seemed to work more extensively for dependencies.
Auto conversion from mo.sql + Python code --> SQL
* I have data from an mo.sql outputting to a dataframe.
* This dataframe is then used in am mo.md
* Everything would be set up correctly - I would restart the kernel and the script would autorun
* Upon restart/rerun, my cells with mo.sql + Python would convert to SQL. I tried many times to have the .py cell format stick.
* To resolve this, I had to break out my mo.sql -> dataframe code (also unfortunately having to use the fix above) into a previous cell, and then display that resulting dataframe via an mo.md in the next cell.
Recommendation
Ideally, cells would not auto-convert from Python --> SQL. Some people might be more comfortable using mo.sql explicitly.
Additionally, ideally I could generate a DF with mo.sql in a cell, and also present that DF in mo.md. If this is undesired, then throwing an exception and stating this requirement would be helpful.
5 Replies
Additionally, ideally I could generate a DF with mo.sql in a cell, and also present that DF in mo.md. If this is undesired, then throwing an exception and stating this requirement would be helpful.This should be possible. If it's not working I think it's a bug. Let me try to give you an example.
Upon restart/rerun, my cells with mo.sql + Python would convert to SQL. I tried many times to have the .py cell format stick.The SQL rendering of cells is UI sugar -- the code is still Python. You can click the Python icon in the top right of a cell to view the underlying Python. If the underlying Python code is not the same as what you had, then that is a bug, otherwise it is more of a UI issue. Does that make sense?
Here is an example of using the query result of a
SQL
cell in markdown:
https://marimo.app/?slug=zv70bcmarimo | a next-generation Python notebook
A reactive notebook for Python — run reproducible experiments, execute as a script, deploy as an app, and version with git.
cell 25 (previously cell 24, now split into 24 and 25**) is an example of where my python code was attempted to be converted into SQL when it should not have been. And when I try to switch it back to python is mis-converts it, so I have g to do it manually. https://marimo.io/p/@michael-day/michael-day-switchyards-case-oct-7
marimo | Michael Day Switchyards Case Oct 7
Explore data and build apps seamlessly with marimo, a next-generation Python notebook.
screenshot of the cell. Seems to cut off the top and bottom rows of text.
I'm going to have to fix it now as I am presenting tomorrow morning. Will fix it by breaking out the mo.sql function from the rest of the python code.
Thank you, I’ll look into this 🙏