标签: sqlalchemy

WTForms相当于Go?

我目前正在开发一个使用Flask,WTForms,SQLAlchemy和相应的Flask扩展的应用程序来将它们粘合在一起.我正考虑将来搬到Go,因为原因.Go中是否有任何库允许我将Web表单映射到模型并以与WTForms相同的方式进行参数化验证?

sqlalchemy go wtforms

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

只能使用关联表对象而不是名称来定义辅助关系

尝试在类Note和Document之间创建关联关系.我面临的问题是,只有当我使用关联表对象而不是表名时,我的辅助关系才有效.我的意思是这种关系:

notes = relationship(u'Note', secondary=t_Documented, backref='documents')
Run Code Online (Sandbox Code Playgroud)

有效,但以下不起作用:

notes = relationship(u'Note', secondary='Documented', backref='documents')
Run Code Online (Sandbox Code Playgroud)

查询时,我收到错误:

sqlalchemy.exc.InvalidRequestError:初始化映射器Mapper | Document | Document时,表达式'Documented'无法找到名称("name'Documented'未定义").如果这是类名,请考虑在定义了两个依赖类之后将此关系()添加到类中.

我宁愿使用该名称,因为我的模型是使用sqlacodegen生成的.

此外,SQLAlchemy文档说我可以使用名称(http://docs.sqlalchemy.org/en/rel_0_9/orm/relationships.html#many-to-many)和"使用声明性扩展名".我用谷歌搜索了导致我这一点的术语.问题是在我的情况下我可以如何扩充基地.

# model.py
# coding: utf-8
from sqlalchemy import Column, Date, DateTime, ForeignKey, ForeignKeyConstraint, Index, Integer, Numeric, String, Table, Text, text
from sqlalchemy.orm import backref, relationship
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
metadata = Base.metadata

t_Documented = Table(
    'Documented', metadata,
    Column('id', Integer, primary_key=True),
    Column('note_id', ForeignKey(u'MySchema.Note.id'), nullable=False),
    Column('document_id', ForeignKey(u'MySchema.Document.id'), nullable=False, index=True),
    Column('inserted', DateTime, nullable=False, server_default=text("'0000-00-00 00:00:00'")),
    Column('updated', …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

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

你如何更新flask-sqlalchemy中的多个值?

你如何更新多个值?

predictions=Fixture_prediction.query\
   .filter_by(user_id=user_id)\
   .update(request.form['home_score'],request.form['away_score'])
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

ArgumentError: Valid strategies for session synchronization are False, 'evaluate' and 'fetch'
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy jinja2 flask flask-sqlalchemy

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

金字塔postgresql连接

我是金字塔的全新.我正在尝试开发一个将使用金字塔angd postgresql的应用程序,但我完全困惑如何在sripts目录中配置initializedb.py文件,尤其是初始化数据库.

我正在使用PostgreSQL 9.1.

postgresql sqlalchemy pyramid

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

在PostgreSQL上,Pandas to_sql除了'public'之外不能写入架构

我正在尝试将数据框的内容写入除"公共"模式之外的模式中的表.我按照Pandas中描述的模式将数据帧写入其他postgresql模式:

meta = sqlalchemy.MetaData()
engine = create_engine('postgresql://some:user@host/db')
meta = sqlalchemy.MetaData(engine, schema='schema')
meta.reflect(engine, schema='schema')
pdsql = pandas.io.sql.PandasSQLAlchemy(engine, meta=meta)
Run Code Online (Sandbox Code Playgroud)

但是当我试着写到桌子上时:

pdsql.to_sql(df, 'table', if_exists='append')
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

InvalidRequestError: Table 'schema.table' is already defined for this MetaData instance.  Specify 'extend_existing=True' to redefine options and columns on an existing Table object.
Run Code Online (Sandbox Code Playgroud)

我也尝试添加extend_existing=Truereflect通话中,但这似乎没有什么区别.

如何让pandas写入此表?

python sql postgresql sqlalchemy pandas

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

Flask-SQLAlchemy'OR'查询具有可变数量的参数

我有一个高级搜索界面,它将key:value对发送到我的flask应用程序.关键是要搜索的表中的列,值是要比较的条件.

下面是项目的示例查询,其中k是Projects表中的'tags'列,v是要搜索的标记.

projects = Projects.query.filter(getattr(Projects, k).like('%{}%'.format(v)))
Run Code Online (Sandbox Code Playgroud)

如果用户提交两个要搜索的标记,则v将是两个标记的列表.然后,我可以像这样查询数据库:

if len(v) == 2:
    v1, v2 = v[0], v[1]
    projects = Projects.query.filter(or_(
        getattr(Projects, k).like('%{}%'.format(v1)),
        getattr(Projects, k).like('%{}%'.format(v2)))
    )
Run Code Online (Sandbox Code Playgroud)

是否有更好的方法来执行"OR"查询,其中标记的数量(在此示例中)是可变的?

如何编写代码以便它可以处理2个标签或10个标签?

python sqlalchemy flask flask-sqlalchemy

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

递归CTE查询

我在构造生成以下原始SQL查询所需的SQLAlchemy代码时遇到问题。

WITH RECURSIVE recruiters AS (
    SELECT 
        recruiter.id
    FROM 
        recruiter
    JOIN 
        recruiter_member ON recruiter.id = recruiter_member.recruiter_id
    WHERE
        recruiter_member.user_id = 'f12c617a-415c-4f8c-add0-81a597545be8'
    UNION ALL
    SELECT 
        children.id
    FROM 
        recrutiers AS parents, 
        recruiter AS children
    WHERE 
        children.recruiter_id = parents.id
)
SELECT
    *
FROM
    recruiters
Run Code Online (Sandbox Code Playgroud)

这里的模型是RecruiterRecruiterMember。我只是似乎没办法UNION正确。

python sqlalchemy

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

Flask-SQLAlchemy加入

您好我在flask-sqlalchemy加入了一个问题.我是数据库和烧瓶的初学者.

这些是我的课程:

class Shopping(db.Model):
    __tablename__ = 'shoppings'
    id = db.Column(db.Integer, primary_key=True)
    product_name = db.Column(db.String(30), index=True, unique=False)
    price=db.Column(db.Float(10), index=True)
    date=db.Column(db.Date())
    s_type_id = db.Column(db.Integer, db.ForeignKey('shopping_types.id'))
    def __repr__(self):
        return 'Alisveris yeri :{0}  Tutar :{1}  Tarih:      {2}'.format(self.product_name,self.price,self.date)

    def __list__(self):
        return [self.product_name,self.price,self.date]

class Shopping_Type(db.Model):
    __tablename__='shopping_types'
    id=db.Column(db.Integer,primary_key=True)
    type_name=db.Column(db.String(30), index=True, unique=True)
    types = db.relationship('Shopping', backref = 'shopping_types', lazy = 'dynamic')
    def __repr__(self):

        return '{0}'.format(self.type_name)
Run Code Online (Sandbox Code Playgroud)

当我尝试python终端并运行:

select shoppings.product_name ,shoppings.price, shoppings.date, shopping_types.type_name from shoppings join shopping_types ON shoppings.s_type_id=shopping_types.id
Run Code Online (Sandbox Code Playgroud)

询问

我得到了我想要的但是当我运行flask-sqlalchemy命令时:

rslt=db.session.query(spng).join(st)
spng:Shopping(class)
st:Shopping_Type(class)
Run Code Online (Sandbox Code Playgroud)

我只获得购物数据.我想购买Shopping + Shopping_Type数据.

谢谢.

python join sqlalchemy flask-sqlalchemy

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

如何在Flask SQLAlchemy中双向建立与辅助backref的数据库关系?

我创建了一个User模型和Kid模型。在孩子模型中,我有:

parents = db.relationship('User', secondary=kids_users,
                        backref=db.backref('kids', lazy='dynamic'))
Run Code Online (Sandbox Code Playgroud)

辅助表定义如下所示:

kids_users = db.Table('kids_users',
  db.Column('kid_id', db.Integer(), db.ForeignKey('kid.id')),
  db.Column('user_id',db.Integer(), db.ForeignKey('user.id')))
Run Code Online (Sandbox Code Playgroud)

我的User模型不包含与此相关的任何内容,因为此代码可以完成所有操作。

情况是这样:当我查询时,some_kid.parents它返回了一个不错的数组:

[<User u'someuser@yahoo.com'>]
Run Code Online (Sandbox Code Playgroud)

但是当我查询周围的另一种方式时,some_user.kids它会返回一些sql查询:

SELECT kid.id AS kid_id, kid.first_name AS kid_first_name, kid.middle_name AS kid_middle_name, kid.last_name AS kid_last_name, kid.dob AS kid_dob, kid.profile_pic_small AS kid_profile_pic_small, kid.profile_pic_smallish AS kid_profile_pic_smallish, kid.profile_pic_med AS kid_profile_pic_med, kid.profile_pic_large AS kid_profile_pic_large, kid.gender AS kid_gender, kid.current_group AS kid_current_group, kid.status AS kid_status, kid.status_time AS kid_status_time, kid.potty_trained AS kid_potty_trained, kid.pending AS kid_pending, kid.scholarship AS kid_scholarship, …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy has-many flask flask-sqlalchemy

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

使用"不包含"过滤SQLAlchemy一对多

我试图查询和过滤一对多的关系,似乎无法弄清楚如何做到这一点.

这是我的映射(为简洁而修剪):

class Bug(Base):
    __tablename__ = 'bug'
    id = Column('bug_id', Integer, primary_key=True)
    tags = relationship('Tag', backref='bug')

class Tag(Base):
    id = Column('tag_id', Integer, primary_key=True)
    name = Column('tag_name', String)
    bug_id = Column('bug_id', ForeignKey('bug.bug_id'))
Run Code Online (Sandbox Code Playgroud)

我希望能够找到所有没有名称为"foo"的标记的错误.

python sqlalchemy

1
推荐指数
2
解决办法
1002
查看次数