小编les*_*tat的帖子

sqlalchemy存在用于查询

如何检查查询中的数据是否存在?

例如:

users_query = User.query.filter_by(email='x@x.com')
Run Code Online (Sandbox Code Playgroud)

如何检查存在该电子邮件的用户?

现在我检查一下

users_query.count()
Run Code Online (Sandbox Code Playgroud)

但要检查它是否存在.

谢谢!

python sqlalchemy exists

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

SQLAlchemy ManyToMany具有附加字段的辅助表

我有3个表:User,Community,community_members(用于关系many2many的用户和社区).

我使用Flask-SQLAlchemy创建这个表:

community_members = db.Table('community_members',
                db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
                db.Column('community_id', db.Integer, db.ForeignKey('community.id')),
                )


class Community(db.Model):
    __tablename__ = 'community'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False, unique=True)
    members = db.relationship(User, secondary=community_members,
                            backref=db.backref('community_members', lazy='dynamic'))
Run Code Online (Sandbox Code Playgroud)

现在我想向community_members添加其他字段,如下所示:

community_members = db.Table('community_members',
                db.Column('id', db.Integer, primary_key=True),
                db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
                db.Column('community_id', db.Integer, db.ForeignKey('community.id')),
                db.Column('time_create', db.DateTime, nullable=False, default=func.now()),
                )
Run Code Online (Sandbox Code Playgroud)

现在在python shell中我可以这样做:

创建社区:

> c = Community()
> c.name = 'c1'
> db.session.add(c)
> db.session.commit()
Run Code Online (Sandbox Code Playgroud)

将成员添加到社区:

> u1 = User.query.get(1)
> u2 = User.query.get(2)
> c.members.append(u1)
> c.members.append(u2)
> db.session.commit() …
Run Code Online (Sandbox Code Playgroud)

python orm many-to-many sqlalchemy flask-sqlalchemy

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

python对象的sqlalchemy from_statement动态属性

我有这样的模型:

class Test(db.Model, UnicodeMixin):
    __tablename__ = 'test'

    id = db.Column(db.Integer, primary_key=True)

    subject = db.Column(db.String(512), nullable=False)

    additional = None

    def __unicode__(self):
        return u'<Test {0}>'.format(self.id)
Run Code Online (Sandbox Code Playgroud)

有些代码很难SELECT从db中使用其他动态数据来生成RAW SQL 。

例如,它像:

db.session.query(Test).from_statement("SELECT test.id AS test_id, test.subject AS test_subject, 99 AS additional FROM test").all()
Run Code Online (Sandbox Code Playgroud)

它生成python对象的列表Test,但是如何填充additional这些python对象的属性?

我不想在数据库中存储NULLadditional

我想用SQL创建动态附加数据并将其添加到python对象。

请帮忙。

谢谢。

python attributes sqlalchemy dynamic

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

postgresql死锁

有时postgresql引发错误死锁.

在表设置为FOR UPDATE的触发器中.

表评论:

http://pastebin.com/L1a8dbn4

记录(INSERT句子被剪切):

2012-01-26 17:21:06 MSK ERROR:  deadlock detected
2012-01-26 17:21:06 MSK DETAIL:  Process 2754 waits for ExclusiveLock on tuple (40224,15) of relation 735493 of database 734745; blocked by process 2053.
Process 2053 waits for ShareLock on transaction 25162240; blocked by process 2754.
Process 2754: INSERT INTO comment (user_id, content_id, reply_id, text) VALUES (1756235868, 935967, 11378142, 'text1') RETURNING comment.id;
Process 2053: INSERT INTO comment (user_id, content_id, reply_id, text) VALUES (4071267066, 935967, 11372945, 'text2') RETURNING comment.id;
2012-01-26 17:21:06 …
Run Code Online (Sandbox Code Playgroud)

database postgresql triggers deadlock

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