2014-01-13 4 views
0

Я собираюсь создать сайт, используя Flask + MySQL + колбовую SQLAlchemy, однако, прочитав некоторые учебники, у меня есть несколько вопросов:Вопросы об использовании Колба + MySQL + Колба-SQLAlchemy

  • Колба-SQLAlchemy могут быть импортированы, по крайней мере, двумя способами:

http://pythonhosted.org/Flask-SQLAlchemy/quickstart.html

from flask.ext.sqlalchemy import SQLAlchemy 

ИЛИ http://flask.pocoo.org/docs/patterns/sqlalchemy/

from sqlalchemy import create_engine 
from sqlalchemy.orm import scoped_session, sessionmaker 
from sqlalchemy.ext.declarative import declarative_base 

Первый способ кажется гораздо более удобным. Почему команда Pocoo предпочитает использовать второй способ?

  • http://pythonhosted.org/Flask-SQLAlchemy/queries.html Примеры вставки здесь слишком просты. Как я могу выполнить INSERT IGNORE или INNER JOIN? Если я хочу написать собственные инструкции SQL. Как это сделать с помощью SQLAlchemy?

Мне нужны хорошие примеры для MySQL + Flask-SQLAlchemy, в то время как в большинстве случаев SQLite + MySQL + Flask-SQLAlchemy.

ответ

1

Flask-SQLAlchemy был написан Armin (создателем Flask), чтобы упростить работу с SQLAlchemy. Образец, описанный в документации Flask, - это то, что вы использовали бы, если вы не использовали , но не использовали, чтобы использовать расширение Flask-SQLAlchemy.

Что касается MySQL и SQLite, то вся суть ORM SQLAlchemy заключается в том, чтобы позволить (по большей части) игнорировать, с какой базой данных вы работаете. SomeModel.filter(SomeModel.column == 'value') будет работать одинаково независимо от того, к какой базе данных вы подключаетесь.

4

Я кодировал с использованием MySQL + Flask-SQLAlchemy, и я размещаю свои приложения на pythonanywhere.com, например, что @Sean Vieira сказал, что ваш код будет работать в любой реляционной базе данных, единственное, что вам нужно изменить, это строка соединения к базе данных своему вкусу, например, с помощью Mysql, это будет сохранено в файле под названием config.py [вы можете сохранить его, используя любое другое имя]

SQLALCHEMY_DATABASE_URI = 'mysql://username:[email protected]/yourdatabase' 
SQLALCHEMY_POOL_RECYCLE = 280 
SQLALCHEMY_POOL_SIZE = 20 
SQLALCHEMY_TRACK_MODIFICATIONS = True 

затем в главном приложении, вы будете импортировать его как это

from flask import Flask 
from flask_sqlalchemy import SQLAlchemy 

# Create an Instance of Flask 
application = Flask(__name__) 

# Include config from config.py 
application.config.from_object('config') 
application.secret_key = 'some_secret_key' 

# Create an instance of SQLAlchemy 
db = SQLAlchemy(application) 

и все, что вам нужно, это убедиться, что ваш мод ELS соответствуют таблице базы данных как модель ниже

class Isps(db.Model): 
__tablename__ = "isps" 
isp_id = db.Column('isp_id', db.Integer, primary_key=True) 
isp_name = db.Column('isp_name', db.String(80), unique=True) 
isp_description = db.Column('isp_description', db.String(180)) 

# services = db.relationship('Services', backref="isps", cascade="all, delete-orphan",lazy='dynamic') 


def __init__(self, isp_name, isp_description): 
    self.isp_name = isp_name 
    self.isp_description = isp_description 

def __repr__(self): 
    return '<Isps %r>' % self.isp_name 

, а затем вы можете узнать силу SQLAlchemy делать оптимизированные запросы

Смежные вопросы