2012-03-23 10 views
11

Kann jemand in Flask Beispielcodes für den Zugriff auf eine MySQL DB teilen? Es gab Dokumente, die zeigen, wie man sich mit sqlite verbindet, aber nicht mit MySQL.Verwenden von MySQL in Flask

Vielen Dank im Voraus

+3

google für Flask-sqlalchemy – Bastian

Antwort

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 

können Sie google "Flask-sqlalchemy" für weitere Dinge.

+3

ja, aber das ist mit sqlalchemy. was ist mit nur geraden mysql? –

17

Zuerst müssen Sie Flask-MySQL-Paket installieren. Mit pip zum Beispiel:

pip install flask-mysql

Als nächstes müssen Sie einige Konfiguration hinzufügen und initialisieren 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) 

Jetzt können Sie Verbindung und Cursor Objekte erhalten und ausführen rohe Anfragen:

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

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

Wie kann ich nach Verbindungsfehlern suchen? –

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

Danke für Ihre Antwort. Kannst du, anstatt nur Code zu veröffentlichen, etwas mehr darüber erzählen, was dieser Code bewirkt? – JAL

3

Ziemlich einfach mit 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) 

In Ihrer Datei index.html tun nur so etwas wie:

<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> 
Verwandte Themen