【问题标题】:Questions about using Flask+MySQL+Flask-SQLAlchemy关于使用 Flask+MySQL+Flask-SQLAlchemy 的问题
【发布时间】:2014-01-31 17:24:19
【问题描述】:

我打算用 Flask+MySQL+Flask-SQLAlchemy 建一个网站,但是看了一些教程后,我有一些疑问:

  • Flask-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 团队选择使用第二种方式?

我需要一些关于 MySQL+Flask-SQLAlchemy 的好例子,而大多数例子是 SQLite+MySQL+Flask-SQLAlchemy。

【问题讨论】:

    标签: mysql sqlalchemy flask


    【解决方案1】:

    我一直在使用 MySQL+Flask-SQLAlchemy 进行编码,并且我在 pythonanywhere.com 上托管我的应用程序,就像 @Sean Vieira 所说的那样,您的代码将在任何关系数据库上运行,您唯一需要更改的是连接字符串您喜欢的数据库,例如使用 Mysql,这将保存在一个名为 config.py 的文件中[您可以使用任何其他名称保存它]

    SQLALCHEMY_DATABASE_URI = 'mysql://username:password@localhost/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)
    

    您所需要的只是确保您的模型对应于如下模型的数据库表

     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 的强大功能来优化查询

    【讨论】:

      【解决方案2】:

      Flask-SQLAlchemy 由 Armin(Flask 的创建者)编写,以简化 SQLAlchemy 的使用。如果您没有选择使用 Flask-SQLAlchemy 扩展,您将使用 Flask 文档中描述的模式。

      对于 MySQL 与 SQLite,SQLAlchemy ORM 的全部意义在于(在大多数情况下)可以忽略正在运行的数据库。无论您连接到什么数据库,SomeModel.filter(SomeModel.column == 'value') 的工作原理都是一样的。

      【讨论】:

        猜你喜欢
        • 2014-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-27
        • 2021-09-05
        相关资源
        最近更新 更多