restful - web service python example
Usando MySQL en el Frasco (4)
¿Puede alguien 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.
Muchas gracias por adelantado
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 su archivo index.html solo haga 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>
Primero necesitas instalar el paquete Flask-MySQL. Usando pip
por ejemplo:
pip install flask-mysql
A continuación, debe agregar alguna 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 puede obtener objetos de conexión y cursor y ejecutar consultas sin formato:
conn = mysql.connect()
cursor =conn.cursor()
cursor.execute("SELECT * from User")
data = cursor.fetchone()
#!/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})
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config[''SQLALCHEMY_DATABASE_URI''] = ''mysql://username:password@server/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
Puedes google "Flask-Sqlalchemy" para más cosas.