2012-03-23 106 views
11

¿Alguien puede compartir códigos de ejemplo en Flask sobre cómo acceder a una base de datos MySQL? Ha habido documentos que muestran cómo conectarse a sqlite pero no en MySQL.Uso de MySQL en Flask

Muchas gracias de antemano

+3

Google para matraz de sqlalchemy – Bastian

Respuesta

20
from flask import Flask 
from flask.ext.sqlalchemy import SQLAlchemy 

app = Flask(__name__) 
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:[email protected]/db' 
db = SQLAlchemy(app) 


class User(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    username = db.Column(db.String(80), unique=True) 
    email = db.Column(db.String(120), unique=True) 

    def __init__(self, username, email): 
     self.username = username 
     self.email = email 

    def __repr__(self): 
     return '<User %r>' % self.username 

Puede google "Frasco-sqlalchemy" para más cosas.

+3

sí, pero eso es con sqlalchemy. ¿Qué hay de simplemente mysql? –

17

Primero necesita instalar el paquete Flask-MySQL. Usando pip por ejemplo:

pip install flask-mysql

continuación, tiene que añadir un poco de configuración e inicializar MySQL:

from flask import Flask 
from flaskext.mysql import MySQL 

app = Flask(__name__) 
mysql = MySQL() 
app.config['MYSQL_DATABASE_USER'] = 'root' 
app.config['MYSQL_DATABASE_PASSWORD'] = 'root' 
app.config['MYSQL_DATABASE_DB'] = 'EmpData' 
app.config['MYSQL_DATABASE_HOST'] = 'localhost' 
mysql.init_app(app) 

Ahora usted puede obtener objetos de conexión y de cursor y ejecutar consultas primas:

conn = mysql.connect() 
cursor =conn.cursor() 

cursor.execute("SELECT * from User") 
data = cursor.fetchone() 
+1

¿cómo puedo verificar si hay errores de conexión? –

1
#!/usr/bin/python 
from flask import Flask,jsonify,abort, make_response 
import MySQLdb 

app = Flask(__name__) 

db = MySQLdb.connect("localhost", "root", "yourDbPassWord", "DBname") 

@app.route('/api/v1.0/items', methods=['GET']) 
def get_items(): 
    curs = db.cursor() 
    try: 
     curs.execute("SELECT * FROM items") 
     ... 

    except: 
     print "Error: unable to fetch items" 
    return jsonify({"desired: " response}) 
+0

Gracias por su respuesta. En lugar de simplemente publicar el código, ¿puede proporcionarnos un poco más sobre lo que hace este código? – JAL

3

Bastante simple con pymysql:

from flask import Flask, request, render_template 
import pymysql 

db = pymysql.connect("localhost", "username", "password", "database") 

app = Flask(__name__) 
api = Api(app) 

@app.route('/') 
def someName(): 
    cursor = db.cursor() 
    sql = "SELECT * FROM table" 
    cursor.execute(sql) 
    results = cursor.fetchall() 
    return render_template('index.html', results=results) 

if __name__ == '__main__': 
app.run(debug=True) 

En el archivo index.html acaba de hacer algo como:

<div> 
<% for row in results %} 
     <tr> 
     <td>{{ row[0] }}</td> 
     <td>{{ row[1] }}</td> 
     <td>{{ row[2] }}</td> 
     <td>{{ row[3] }}</td> 
     </tr> 
{% endfor %} 
</div>