如何检查查询中的数据是否存在?
例如:
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)
但要检查它是否存在.
谢谢!
我有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) 我有这样的模型:
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对象的属性?
我不想在数据库中存储NULL列additional。
我想用SQL创建动态附加数据并将其添加到python对象。
请帮忙。
谢谢。
有时postgresql引发错误死锁.
在表设置为FOR UPDATE的触发器中.
表评论:
记录(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) python ×3
sqlalchemy ×3
attributes ×1
database ×1
deadlock ×1
dynamic ×1
exists ×1
many-to-many ×1
orm ×1
postgresql ×1
triggers ×1