标签: flask-sqlalchemy

SqlAlchemy不接受DateTime列中的datetime.datetime.now值

我首先应该提到我通过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)

有人能告诉我如何才能让它发挥作用吗?我也尝试了以下模型,但这也行不通.同样的错误. …

python sqlalchemy flask-sqlalchemy

13
推荐指数
3
解决办法
2万
查看次数

配置Flask-SQLAlchemy以使用Flask-Restless的多个数据库

我有一个使用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)

python flask flask-sqlalchemy

12
推荐指数
1
解决办法
9365
查看次数

SQLAlchemy/Flask/PostgreSQL池连接

在与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)

我想知道:

  1. 有自动连接池吗?或者每次调用Model.query ...都会创建一个到数据库的新连接?
  2. 如果没有,我该如何配置它?
  3. 如果是,默认值是什么,我该如何修改这些值?

非常感谢你的帮助!

postgresql sqlalchemy flask flask-sqlalchemy

12
推荐指数
1
解决办法
6390
查看次数

Flask:app工厂需要的蓝图吗?

我想拥有几个应用工厂(目前:一个用于开发,另一个用于测试).我想知道实现它们的正确方法是什么.

目前我使用app对象来注册视图(通过@app.route()装饰器).我是否需要开始使用蓝图(而不是app)来注册视图?有没有办法让没有blueprients的合适的app工厂?

python flask flask-sqlalchemy

12
推荐指数
2
解决办法
3378
查看次数

Flask-SQLAlchemy查询连接关系表

我正在使用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)

join sqlalchemy flask flask-sqlalchemy

12
推荐指数
1
解决办法
4万
查看次数

Sqlalchemy按列表中的字段过滤但保留原始订单?

我有一个像这样的鞋子模型:

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()

python sqlalchemy flask-sqlalchemy

12
推荐指数
2
解决办法
2万
查看次数

如果引发异常,如何使Flask-SQLAlchemy自动回滚会话?

我想设置一个应用程序,Flask-SQLAlchemy用于回滚对数据库所做的所有更改,如果视图引发了一个异常,即在视图代码之外冒泡(即没有捕获到内部).

即使某些对象在子事务中被自动或直接刷新到数据库,我也希望它能够工作session.commit().

类似于Django的交易请求包装的东西.

python transactions flask flask-sqlalchemy

12
推荐指数
3
解决办法
1万
查看次数

在sql分页中保持列表的顺序

我有一个包含插入顺序的列表.我想使用相同的顺序对结果进行分页.正如您目前所看到的,输出将是不同的顺序.

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)

相关问题

python postgresql sqlalchemy flask flask-sqlalchemy

12
推荐指数
1
解决办法
996
查看次数

Flask SQLAlchemy数据映射器与活动记录模式

我最近开始研究Flask和Flask-SQLAlchemy.来自Django背景我发现Flask-SQLAlchmey非常复杂.我已经读过,SQLAlchemy实现了Data Mapper模式,而Django ORM则基于Active Record Pattern.

下面是一个编写的示例代码,它实现了访问数据库的存储库模式.

是S.Lott(271k声誉)评论的另一个链接,他说ORM是数据访问层,它与模型分开.

我的问题是这些:

  1. 您是否可以在上面的示例中提供实际用例,或者您自己的数据映射器模式有用的示例?我读到的每个地方都是数据映射器模式在复杂情况下很有用,但没有看到示例.
  2. 在上述情况下使用存储库模式与使用数据映射器模式相同吗?
  3. 数据映射器拥护者是否在与示例中所做的模型不同的类中编写选择查询?
  4. 为什么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

12
推荐指数
2
解决办法
3967
查看次数

编辑视图中的只读表单字段 - Flask-Admin

我尝试将表单字段设置readonly为Flask-Admin应用程序中的编辑视图.根据这个问题的答案,我知道如果我有这个

class MyView(ModelView):
    form_widget_args = {
        'title': {
            'readonly': True
        }
    }
Run Code Online (Sandbox Code Playgroud)

我可以将表单字段设置为readonly,但这适用于创建编辑视图.如何仅将参数应用于编辑视图?

python flask flask-sqlalchemy flask-admin

12
推荐指数
2
解决办法
1197
查看次数