matt hoover matt hoover -4 years ago 80
Python Question

Why do I have to change the uri in Flask for SQLAlchemy?

I am trying to develop a web application in Flask, and I have noticed that if I want to use SQLite3 as my database, then I have to input

DATABASE = 'flaskr.json'


However, if I want to use SQLAlchemy for my database implementation, I have to use something like

DATABASE = 'sqlite:////Users/jake/repos/flaskralchemy/flaskr.db


What is the significance of this change? Also, in all the examples that I have seen, no one creates an actual database on their server. What is going on?

Thanks in advance.

Answer Source

I'm a little unclear what you're asking, where you're setting this DATABASE value and where the flaskr.json value is coming from. But I'll give it a shot, and hopefully it'll be of some use.

So, obviously, you need to tell your app how to connect to your database. You generally set this up in the app configuration like so:

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'

For SQLlite, you just need a file path (as above) For MySQL, I have our app set up like so:

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@server.site.com/database'

You can read way more than you ever wanted to know about this in the SQLAlchemy docs:

http://docs.sqlalchemy.org/en/rel_0_8/core/engines.html#database-urls

Also, have you looked at the Flask-SQLAlchemy plugin? It gives you some nice tools to work with this.

http://packages.python.org/Flask-SQLAlchemy/quickstart.html#a-minimal-application

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download