Импорт SQLAlchemy
не даст вам прямой доступ к именам внутри этого модуля. Вы также должны знать, что с использованием модуля flask_sqlalchemy
(ранее flask.ext.sqlalchemy
) используется несколько другой механизм доступа к функциям SQLAlchemy. Это означает, что любая попытка передать ваши текущие знания SQLAlchemy
shouold будет проинформирована об исследовании flask_sqlalchemy
documentation.
Обычно вы создадите приложение-флягу, а затем передаете это на звонок SQLAlchemy
as in this example. Соответствующий код показан ниже.
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
Объект db
теперь имеет Model
, Column
и различные типы данных, как атрибуты, так что вы можете определить таблицу/модель следующим образом.
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
Я лично не увлекаюсь данной модели доступа, так как она заставляет меня квалифицировать различные имена внутри db
пространства имен, а не просто импортировать их из модуля и их использование неквалифицированных, но это похоже на работу (по крайней мере, для относительно несложных баз данных).
Если вы опытный пользователь SQLAlchemy, вы можете рассмотреть возможность использования стандартных механизмов доступа, хотя это может сделать вас уязвимыми для тонких ошибок из-за непредвиденных взаимодействий потоков/веб-сеансов. Я также слышал, что может быть сложно установить несколько баз данных. У меня нет прямых доказательств этого, поэтому, пожалуйста, расценивайте это как анекдотическое.
Вы установили SQLAlchemy в свою виртуальную среду? – SumanKalyan
Такое поведение явно связано с попыткой обработать 'flask_sqlachemy', как будто это была« родная »или« настоящая »sqlalchemy, когда это явно не так. Нигде в документации ['flask_sqlachemy'] (http://flask-sqlalchemy.pocoo.org/2.1/) не используется код, который вы рекомендуете или документируете. Я согласен, что было бы полезно, если бы различия были явно отмечены - я совершил ту же ошибку, когда впервые использовал Flask. – holdenweb