
Poszukiwania metody połączenia się z bazą przyniosły odkrycie, że istnieje kilka modułów których możemy użyć w tym celu. Znalezione przeze mnie to:
Krótki opis każdego z modułów (forma jest celowo dość ścisła, post ma być szybką ściągawką dla mnie i być innych szukających tego typu zestawienia).
Flask-MySQL
Strona projektu: https://flask-mysql.readthedocs.ioChyba najprostszy z wymienionych modułów, oparty na wymienionym powyżej MySQLdb. Niestety z tego powodu działa tylko z Python w wersji 2.4-2.7. Dla mnie nie jest to problem, ale jeśli ktoś pisze w Python 3+ to nie skorzysta z tego rozszerzenia. Ciągle dość popularny i dobrze wypozycjonowany, ja jednak nie będę go używał.
Inicjalizacja:
from flask import Flask
from flaskext.mysql import MySQL
app = Flask(__name__)
mysql = MySQL()
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
app.config['MYSQL_DATABASE_USER'] = 'db_username'
app.config['MYSQL_DATABASE_PASSWORD'] = 'db_password'
app.config['MYSQL_DATABASE_DB'] = 'db_name'
mysql.init_app(app)
Użycie:
connection = mysql.connect()
cursor = connection.cursor()
cursor.execute("SELECT * FROM user")
data = cursor.fetchall()
Flask-MySQLdb
Strona projektu: http://flask-mysqldb.readthedocs.ioW skrócie i uproszczeniu: ulepszona wersja poprzedniego modułu, obsługuje Python 3. Zacytuję wypowiedź autora którą znalazłem:
I wrote it because back then flask-mysql didn't work outside of a request context (not sure if it does now) and because it's based on MySQL-python while flask-mysqldb is based on mysqlclient which is fully backwards compatible fork of MySQL-python and is compatible with Python 3.3+. You mentioned you're using Python 3.4.3 so flask-mysql will not work.Inicjalizacja:
flask-mysqldb is really meant to be a tiny, tiny wrapper for mysqlclient so if you need something more like an ORM flask-sqlalchemy is definitely the way to go.
from flask import Flask
from flask_mysqldb import MySQL
app = Flask(__name__)
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'db_username'
app.config['MYSQL_PASSWORD'] = 'db_password'
app.config['MYSQL_DB'] = 'db_name'
mysql = MySQL(app)
Użycie:
cursor = mysql.connection.cursor()
cursor.execute("SELECT * FROM user")
data = cursor.fetchall()
Flask-SQLAlchemy
Strona projektu: http://flask-sqlalchemy.pocoo.org/2.1/Bardziej ORM niż prosty moduł do połączenia z bazą. Najpopularniejszy wśród Pythonowych ORMów, prawdopodobnie dlatego dorobił się dedykowanego modułu dla Flask.
Inicjalizacja:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/db_name'
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 '' % self.username
Użycie:
data = User.query.all()
0 komentarze:
Prześlij komentarz