我首先应该提到我通过Flask-SqlAlchemy使用SqlAlchemy.我不相信这会影响这个问题,但如果确实如此,请告诉我.
以下是我在SqlAlchemy中运行create_all函数时收到的错误消息的相关部分
InterfaceError: (InterfaceError) Error binding parameter 4 - probably unsupported type. u'INSERT INTO podcasts (feed_url, title, url, last_updated, feed_data) VALUES (?, ?, ?, ?, ?)' (u'http://example.com/feed', u'Podcast Show Title', u'http://example.com', '2012-04-17 20:28:49.117000'
这是我的模型:
class Podcast(db.Model):
import datetime
__tablename__ = 'podcasts'
id = db.Column(db.Integer, primary_key=True)
feed_url = db.Column(db.String(150), unique=True)
title = db.Column(db.String(200))
url = db.Column(db.String(150))
last_updated = db.Column(db.DateTime, default=datetime.datetime.now)
feed_data = db.Column(db.Text)
def __init__(self, feed_url):
import feedparser
self.feed_url = feed_url
self.feed_data = feedparser.parse(self.feed_url)
self.title = self.feed_data['feed']['title']
self.url = self.feed_data['feed']['link']
Run Code Online (Sandbox Code Playgroud)
有人能告诉我如何才能让它发挥作用吗?我也尝试了以下模型,但这也行不通.同样的错误. …
我有一个使用Flask-SQLAlchemy的Flask应用程序,我正在尝试将其配置为使用Flask-Restless软件包使用多个数据库.
根据文档(http://pythonhosted.org/Flask-SQLAlchemy/binds.html),配置模型以使用多个数据库__bind_key__似乎非常简单.
但它似乎对我不起作用.
我创建我的应用程序并初始化我的数据库,如下所示:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
SQLALCHEMY_DATABASE_URI = 'postgres://db_user:db_pw@localhost:5432/db_name'
SQLALCHEMY_BINDS = {
'db1': SQLALCHEMY_DATABASE_URI,
'db2': 'mysql://db_user:db_pw@localhost:3306/db_name'
}
app = Flask(__name__)
db = SQLALchemy(app)
Run Code Online (Sandbox Code Playgroud)
然后定义我的模型,包括__bind_key__,它应告诉SQLAlchemy它需要使用哪个DB:
class PostgresModel(db.Model):
__tablename__ = 'postgres_model_table'
__bind_key__ = 'db1'
id = db.Column(db.Integer, primary_key=True)
...
class MySQLModel(db.Model):
__tablename__ = 'mysql_model_table'
__bind_key__ = 'db2'
id = db.Column(db.Integer, primary_key=True)
...
Run Code Online (Sandbox Code Playgroud)
然后我像这样点燃Flask-Restless:
manager = restless.APIManager(app, flask_sqlalchemy_db=db)
manager.init_app(app, db)
auth_func = lambda: is_authenticated(app)
manager.create_api(PostgresModel,
methods=['GET'],
collection_name='postgres_model',
authentication_required_for=['GET'],
authentication_function=auth_func)
manager.create_api(MySQLModel,
methods=['GET'], …Run Code Online (Sandbox Code Playgroud) 在与Django玩了很长时间后,我正在尝试使用SQLAlchemy的一些Flask,我必须说我非常喜欢它.但是有一些我没有得到的东西:我有一个使用PostgreSQL的小型Flask/SQLAlchemy应用程序.在我的__init__.py档案中,我有:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object('settings')
db = SQLAlchemy(app)
Run Code Online (Sandbox Code Playgroud)
我想知道:
非常感谢你的帮助!
我想拥有几个应用工厂(目前:一个用于开发,另一个用于测试).我想知道实现它们的正确方法是什么.
目前我使用app对象来注册视图(通过@app.route()装饰器).我是否需要开始使用蓝图(而不是app)来注册视图?有没有办法让没有blueprients的合适的app工厂?
我正在使用Flask和SQLAlchemy构建一个应用程序.我基本上有3个表:用户,友谊和bestFriends:
用户可以拥有许多朋友,但只有一个最好的朋友.所以我希望我的模型是关系型的."一对多"用于"用户"和"友谊"之间的关系以及"用户"和"最佳朋友"之间的"一对一"关系.
这是我的模特:
from app import db
from sqlalchemy.orm import relationship, backref
from sqlalchemy import Table, Column, Integer, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
class users(db.Model):
__tablename__ = "Users"
id = db.Column(db.Integer, primary_key=True)
userName = db.Column(db.String, nullable=False)
userEmail = db.Column(db.String, nullable=False)
userPhone = db.Column(db.String, nullable=False)
userPass = db.Column(db.String, nullable=False)
friendsR = db.relationship('friendships', backref='friendships.friend_id', primaryjoin='users.id==friendships.user_id', lazy='joined')
def __init__(self, userName, userEmail, userPhone, userPass):
self.userName = userName
self.userEmail = userEmail
self.userPhone = userPhone
self.userPass = userPass
def __repr__(self):
return '{}-{}-{}-{}'.format(self.id, self.userName, self.userEmail, self.userPhone)
class …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的鞋子模型:
class Shoe(db.Model):
id = db.Column(db.Integer, primary_key = True)
asin = db.Column(db.String(20), index = True)
Run Code Online (Sandbox Code Playgroud)
我有一个像ids = [2,1,3]的id列表,当我在Shoe模型上查询结果在'ids'列表中有id时,我想回来:[{id:2,asin:" 111"},{id:1,asin:"113"},{id:3,asin:"42"}]但问题是使用以下查询语句不保留原始顺序,结果将会到来随机回来.如何保持我过滤的列表顺序?
不正确的一个: Shoe.query.filter(Shoe.id.in_(my_list_of_ids)).all()
我想设置一个应用程序,Flask-SQLAlchemy用于回滚对数据库所做的所有更改,如果视图引发了一个异常,即在视图代码之外冒泡(即没有捕获到内部).
即使某些对象在子事务中被自动或直接刷新到数据库,我也希望它能够工作session.commit().
类似于Django的交易请求包装的东西.
我有一个包含插入顺序的列表.我想使用相同的顺序对结果进行分页.正如您目前所看到的,输出将是不同的顺序.
following_companies_list_data = Company.query.filter(Company.id.in_(['2', '24', '1', '7', '373'])).paginate(
page, per_page=10, error_out=False)
companies = following_companies_list_data.items
for i in companies:
print i.id
7
24
373
2
1
Run Code Online (Sandbox Code Playgroud)
相关问题
我最近开始研究Flask和Flask-SQLAlchemy.来自Django背景我发现Flask-SQLAlchmey非常复杂.我已经读过,SQLAlchemy实现了Data Mapper模式,而Django ORM则基于Active Record Pattern.
下面是一个编写的示例代码,它实现了访问数据库的存储库模式.
这是S.Lott(271k声誉)评论的另一个链接,他说ORM是数据访问层,它与模型分开.
我的问题是这些:
Question.query.filter_by(text = text).all()不比使用更好
db.session.query(Question).filter(Question.text == text).all()?这不是DataMapper与ActiveRecord模式的重复,因为这只是告诉定义,我对实际例子更感兴趣.
python activerecord design-patterns datamapper flask-sqlalchemy
我尝试将表单字段设置readonly为Flask-Admin应用程序中的编辑视图.根据这个问题的答案,我知道如果我有这个
class MyView(ModelView):
form_widget_args = {
'title': {
'readonly': True
}
}
Run Code Online (Sandbox Code Playgroud)
我可以将表单字段设置为readonly,但这适用于创建和编辑视图.如何仅将参数应用于编辑视图?
flask-sqlalchemy ×10
python ×8
flask ×7
sqlalchemy ×5
postgresql ×2
activerecord ×1
datamapper ×1
flask-admin ×1
join ×1
transactions ×1