Handling user database in flask web app without ORM like SQLAlchemy
No, an ORM is not required, just incredibly convenient.  SQLAlchemy will manage connections, pooling, sessions/transactions, and a wide variety of other things for you.  It abstracts away the differences between database engines.  It tracks relationships between tables in convenient collections.  It generally makes working with complex data much easier.
If you're concerned about performance, SQLAlchemy has two layers, the orm and the core.  Dropping down to the core sacrifices some convenience for better performance.  It won't be as fast as using the database driver directly, but it will be fast enough for most use cases.
But no, you don't have to use it.
Most of the Flask tutorials and examples I see use an ORM such as SQLAlchemy to handle interfacing with the user database. If you have a general working knowledge of SQL, is this extra level of abstraction, heavy with features, necessary? I am tempted to write a lightweight interface/ORM of my own so I better understand exactly what's going on and have full control over the queries, inserts, etc. But are there pitfalls to this approach that I am not considering that may crop up as the project gets more complex, making me wish I used a heavier ORM like SQLAlchemy?