我使用SQLAlchemy并至少有三个实体:engine,session并且connection,其中有execute方法,所以如果我如想选择所有记录,从table我能做到这一点
engine.execute(select([table])).fetchall()
Run Code Online (Sandbox Code Playgroud)
还有这个
connection.execute(select([table])).fetchall()
Run Code Online (Sandbox Code Playgroud)
甚至这个
session.execute(select([table])).fetchall()
Run Code Online (Sandbox Code Playgroud)
- 结果将是相同的.
据我所知,如果有人使用engine.execute它创建connection,打开session(Alchemy为你处理它)并执行查询.但这三种执行此类任务的方式之间是否存在全球差异?
我想做这样的事情:
f = Foo(bar='x')
session.add(f)
session.flush()
# do additional queries using f.id before commit()
print f.id # should be not None
session.commit()
Run Code Online (Sandbox Code Playgroud)
但是当我尝试时,f.id是None.我怎样才能让它发挥作用?
-担
users我的MySql数据库中有表.这个表有id,name而且age领域.
我怎样才能删除一些记录id?
现在我使用以下代码:
user = User.query.get(id)
db.session.delete(user)
db.session.commit()
Run Code Online (Sandbox Code Playgroud)
但我不想在删除操作之前进行任何查询.有没有办法做到这一点?我知道,我可以使用db.engine.execute("delete from users where id=..."),但我想使用delete()方法.
谢谢!
如何使用模型在查询中指定我想要的列(默认选择所有列)?我知道如何使用sqlalchmey会话:session.query(self.col1)但是我如何使用模型?我做不到SomeModel.query().有办法吗?
如何更新行的信息?
例如,我想更改id为5的行的name列.
这是模型:
class User(Base):
...
birthday = Column(Date, index=True) #in database it's like '1987-01-17'
...
Run Code Online (Sandbox Code Playgroud)
我想在两个日期之间进行过滤,例如选择间隔18 - 30年的所有用户.
如何使用SQLAlchemy实现它?
我想:
query = DBSession.query(User).filter(
and_(User.birthday >= '1988-01-17', User.birthday <= '1985-01-17')
)
# means age >= 24 and age <= 27
Run Code Online (Sandbox Code Playgroud)
我知道这不正确,但怎么做正确?
提前致谢!
使用SQLAlchemy,引擎创建如下:
from sqlalchemy import create_engine
engine = create_engine("postgresql://localhost/mydb")
Run Code Online (Sandbox Code Playgroud)
engine如果数据库不存在,则访问失败.如果指定的数据库不存在,是否可以告诉SQLAlchemy创建新数据库?
这个主题暂时没有在这里或其他地方得到解决.有没有将SQLAlchemy <Query object>转换为pandas DataFrame 的解决方案?
Pandas有能力使用,pandas.read_sql但这需要使用原始SQL.我有两个理由想要避免它:1)我已经拥有使用ORM的一切(这本身就是一个很好的理由)和2)我使用python列表作为查询的一部分(例如:我的模型类.db.session.query(Item).filter(Item.symbol.in_(add_symbols)在哪里Item并且add_symbols是一个列表).这相当于SQL SELECT ... from ... WHERE ... IN.
有可能吗?
我一直在试图弄清楚如何迭代SQLAlchemy模型中定义的列列表.我希望它能为一些模型编写一些序列化和复制方法.我不能只迭代obj.__dict__它,因为它包含很多特定于SA的项目.
任何人都知道如何从以下获取id和desc名称?
class JobStatus(Base):
__tablename__ = 'jobstatus'
id = Column(Integer, primary_key=True)
desc = Column(Unicode(20))
Run Code Online (Sandbox Code Playgroud)
在这个小案例中,我可以轻松创建:
def logme(self):
return {'id': self.id, 'desc': self.desc}
Run Code Online (Sandbox Code Playgroud)
但我更喜欢自动生成的东西dict(对于较大的对象).
谢谢你的帮助.
我想在sqlalchemy中使用"group by and count"命令.我怎样才能做到这一点?