小编gum*_*ear的帖子

sqlalchemy,选择所有行

我试图从表中获取所有行.

在控制器我有:

meta.Session.query(User).all()
Run Code Online (Sandbox Code Playgroud)

结果是[, ],但我在这个表中有2行.

我在表中使用这个模型:

import hashlib
import sqlalchemy as sa
from sqlalchemy import orm

from allsun.model import meta

t_user =  sa.Table("users",meta.metadata,autoload=True)

class Duplicat(Exception):
    pass
class LoginExistsException(Exception):
    pass
class EmailExistsException(Exception):
    pass
Run Code Online (Sandbox Code Playgroud)

接下来,在同一个文件中:

class User(object):
    def loginExists(self):
        try:
            meta.Session
                .query(User)
                .filter(User.login==self.login)
                .one()
        except orm.exc.NoResultFound:
            pass
        else:
            raise LoginExistsException()

    def emailExists(self):
        try:
            meta
                .Session
                .query(User)
                .filter(User.email==self.email)
                .one()
        except orm.exc.NoResultFound:
            pass
        else:
            raise EmailExistsException()


    def save(self):
        meta.Session.begin()
        meta.Session.save(self)
        try:
            meta.Session.commit()
        except sa.exc.IntegrityError:
            raise Duplicat()

orm.mapper(User, t_user)
Run Code Online (Sandbox Code Playgroud)

........

python pylons sqlalchemy

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

使用SQLAlchemy获取最后一个插入ID

我正在使用SQLAlchemy

import hashlib
import sqlalchemy as sa
from sqlalchemy import orm

from allsun.model import meta


t_user =  sa.Table("users",meta.metadata,autoload=True)

class Duplicat(Exception):
 pass
class LoginExistsException(Exception):
 pass
class EmailExistsException(Exception):
 pass

class User(object):
 """
 def __setattr__(self, key, value):
  if key=='password' :
   value=unicode(hashlib.sha512(value).hexdigset())
   object.__setattr__(self,key,value)
"""
 def loginExists(self):
  try:
   meta.Session.query(User).filter(User.login==self.login).one()
  except orm.exc.NoResultFound:
   pass
  else:
   raise LoginExistsException()

 def emailExists(self):
  try:
   meta.Session.query(User).filter(User.email==self.email).one()
  except orm.exc.NoResultFound:
   pass
  else:
   raise EmailExistsException()


 def save(self):
  meta.Session.begin()
  meta.Session.save(self)
  try:
   meta.Session.commit()
  except sa.exc.IntegrityError:
   raise Duplicat()
Run Code Online (Sandbox Code Playgroud)

当我打电话时,如何获取最后插入的ID:

user = User()
user.login = request.params['login']
user.password = hashlib.sha512(request.params['password']).hexdigest() …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

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

sqlalchemy COUNT和IF

任何人都知道如果在SQL炼金术中我怎么能算数

COUN(IF(table_row = 1 AND table_row2 =2),1,0)
Run Code Online (Sandbox Code Playgroud)

我做这样的事,

func.COUNT(func.IF((TransactionMessage.tm_read==0 and TransactionMessage.tm_type==1),1,0)).label('t_message_count'),
Run Code Online (Sandbox Code Playgroud)

但是如果使用TransactionMesssage.tm_read和TransactinMessage.tm_type,sqlalchemy会分成2个单独的

可以帮我解决问题吗?

sqlalchemy count

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

标签 统计

sqlalchemy ×3

python ×2

count ×1

pylons ×1