我正在构建一个django应用程序。使用SQLAlchemy作为ORM为用户保存采购订单等数据。但是,我们希望将django ORM用于会话中间件
使用这两个ORM组件是一个错误的设计决策吗
如果我只使用一个ORM,我应该使用哪一个
谢谢
J如果您选择Django,您可能会选择它,因为您觉得它比其他Python web框架为您的项目提供了更多所需的内容。如果将SQLAlchemy与Django一起使用,您将失去Django提供给您的许多功能,例如与表单库的配合、Django应用程序的大量集合等
我有以下ORM课程:
课堂视频(基本):
...
公共标签条目=关系(“视频标签条目”)
标记=关联\代理(“公共\标记\条目”,“值”)
此外,我还将一个事件关联到append:
添加了def视频标签(目标、价值、发起人):
打印“添加标签”
事件.侦听(Video.public\u tag\u条目,'附加',添加了Video\u tag\u)
当我附加到public_tag_条目时,会发出事件
video.public\u tag\u entries.append(VideoTagEn
我在SQLAlchemy中有一个表结构:
User(Base)
__tablename__ = 'users'
id = Column(Integer, primary_key = True)
addresses = relationship("Address", backref="user")
Address(Base)
__talbename__ = 'addresses'
id = Column(Integer, primary_key = Tru
鉴于以下关系:
- 1 MasterProduct parent -> many MasterProduct children
- 1 MasterProduct child -> many StoreProducts
- 1 StoreProduct -> 1 Store
我在SQLAlchemy中定义了以下声明性模型:
类主产品(基本):
__tablename_uuu=‘主产品’
id=列(整数,主键=True)
pid=列(整数,外键('master_products
我用的是烧瓶,SQLAlchemy和WTForms。我的模型对象中有许多属性标记为unique和nullable=False。当在数据库中创建新行时,这可以正常工作,但当我尝试编辑现有对象时,WTForms上的验证程序会失败
{'aproperty':[u'已经存在。]}
如何在不更改数据模型的情况下通过验证
更新
以下操作对我没有任何用处。您需要将现有记录与表单相关联。否则,验证器无法知道您正在更新现有记录,而不是创建新记录。类似于以下内容的内容应该可以做到这一点:
current_obj =
在使用SQLAlchemy创建Teradata volatile表时,我似乎无法创建索引
import teradatasqlalchemy
import sqlalchemy as db
from teradatasqlalchemy import DATE, FLOAT
from teradatasqlalchemy.dialect import TDCreateTablePost as post
#from teradatasqlalchemy.compiler import TDCr
我们需要使用ORM工具将数据库中的引用数据加载到游标中,这样我们就可以使用游标中的数据生成哈希映射和哈希表。请告知SQLAlchemy是否可以用于此用例?如果您想直接访问游标,为什么要使用ORM?
我在用炼金术。问题很简单,但我有一个大问题,因为我想使用MapperExtension
我有两个类:用户和问题
一个用户可能有许多问题,并且它还包含一个问题计数
记录属于他的问题的数量
所以,当我添加一个新问题时,我想更新
用户。首先,我要做的是:
question = Question(title='aaa', content='bbb')
Session.add(question)
Session.flush()
user = question.user
### user is
如何获取req对象的最后一个id?您应该首先提交它(在会话之后。添加(req))。您应该首先提交它(在会话之后。添加(req))。如果在最终打印语句之前执行会话。提交(),则将设置id属性。如前所述,引擎没有理由执行任何SQL查询,因此对象尚未插入。一旦查询运行(在会话刷新或提交时),ID就会出现。如果在最终打印语句之前执行session.commit(),则会设置ID属性。如前所述,引擎没有理由执行任何SQL查询,因此对象尚未插入。一旦查询运行(在会话刷新或提交时),ID就会出现。flush(
我正在使用sqlalchemy(目前使用sqlite,但以后可能会更改)来构建一个数据库,其中插入顺序和rowid非常重要。我基本上有以下几点:
class Message(Base):
__tablename__ = 'messages'
__table_args__ = {'sqlite_autoincrement':True}
id = Column(Integer, primary_key=True)
refs = relationship('Ref')
我有一个与Item类具有一对多关系的用户类:
class User(Base):
items=relationship(Item)
def method(self):
for item in self.items
if self.items.itemname=='my item'
#do something
现在,我想在User类中的方法中访问用户的某些项(已过滤)。编写一个运行在所有项上的for循环(如示
我需要一些模型,例如:
class Work(base):
id = Column(Integer, primary_key=True)
name = Column(String(50))
description = Column(Text)
class Worker(base):
id = Column(Integer, primary_key=True)
name = Column(String(50))
description = Colu
我想问一下两者之间的区别是什么
for row in session.Query(Model1):
pass
及
第一个是一个迭代器,用单个查询轰炸您的数据库,而后一个“急切”的查询则以列表的形式(比如范围(x)与范围(x))?不,数据库流量没有区别。区别在于,对于session.Query(Model1)中的行,在ORM将要给您的每一行上都执行ORM操作,而对于session.Query(Model1)中的行,
如果有一个表包含一列,我想获取另一个表列中列“id”的出现次数
因此,如果每个球员都有一个表“player”,并且有一个表“goals”列出了每个得分,那么有没有一种简单的方法可以在每次将他们得分的一个进球添加到进球表时自动更新player列
另一个例子是“team”和“players”表,在该表中,每当使用player.team\u name==team.name或类似内容添加一名球员时,该表都会更新team.number\u球员
使用JSON作为保存每个用户的{'username':True
我可以从name='Part1'作为SQL语句的部分获取SELECT id,但是使用SQLAlchemy有什么方法可以做到这一点呢
我试过了
db.session.query(Parts.id).filter(name=form.name.data)
但这将返回一个对象,而不是id,将该对象存储在变量中,然后使用点表示法提取所需内容。例如:
item = db.session.query(Parts.id).filter(name=form.name.data).one()
print ite
共有3个表:帐户,角色,用户。Role和User都有一个指向account的外键account\u id
一个用户可以有多个角色,因此roles\u users表充当Role和user之间的辅助关系表
Account表是我们应用程序的租户表,用于分隔不同的客户
请注意,所有表(除了Account)都有带有Account\u id的复合主键。这样做有几个原因,但假设这样做是为了保持所有内容的一致性
现在,如果我有一个简单的二级关系(User.roles——被注释掉的关系),那么所有的关系都可以正常
我在sqlalchemy中有一个继承方案(这是一个示例代码,我想逻辑很清楚):
在这段代码之后,我有了一个包含所有需要的列和基类字段的表。子类字段(“区域”)为空。
有办法解决吗?你的逻辑有点不清楚。如果您总是在generate中显式地创建Base实例,这是值得怀疑的。这就引出了一个问题“你想完成什么”并且需要一个。你也在传递cls以在子级中生成,尽管使用super,这会引起一个错误。问题是,我不想在每个子级中复制generate的“基类”部分。所以我先创建一个基,然后在子类中填充所需的日期。什
sqlalchemy hana是否支持基于正则表达式的SQL查询?
执行此SQL查询并返回结果数据帧的适当语法应该是什么
从第2部分中选择属性值,其中(属性名称非REGEXP“^ADDITIONAL”)SAP HANA不支持语法-WHERE(属性名称非REGEXP“^ADDITIONAL”)
SAP HANA使用名为LIKE_REGEXPR的SQL函数进行正则表达式匹配。有关更多详细信息,请参阅:
我正在为pas.plugin.sqlalchemy定义自定义模型
现有登录详细信息表的密码列为二进制字段。如何在模型中定义为二进制。在谷歌搜索之后,我试图从SQLAlchemy导入_二进制类,但它没有导入。首先,我尝试了LargeBinary,但当创建表时,它将字段类型作为映像,这是我不想要的
任何帮助都将不胜感激
问候,
WebbyBox我对二进制文件不起作用并不感到惊讶——即使它起作用了,但使用打算作为私有类的东西通常是一个非常糟糕的主意。但是“sqlalchemy.Binary”是一种完全
我正在尝试使用SQLAlchemy连接到Informix数据库。我所有的测试似乎都表明这种联系是有效的;但是,每当我尝试读取数据库时,都会出现以下错误:
DatabaseError: (DatabaseError) SQLCODE -217 in PREPARE:
IX000: Column (current_role) not found in any table in the query (or SLV is undefined).
'select CURRENT_ROLE from s
如果我正在使用以下代码
import uuid
Column(Text(), default=lambda: uuid.uuid4().hex[:6], primary_key=True)
…而正在创建的新行恰好与现有行具有相同的6位UUID,会发生什么情况?是否有办法捕获它并尝试创建另一个UUID?很可能会引发IntegrityError异常。您可以使用do_execute事件尝试除块或执行一些技巧,但最简单的方法是将服务器端的UUID生成设置为列默认值。我最终在服务器端设置了它,并在Pos
父项id是相同的表密钥(id)
假设我想得到所有与ID2及其自身相关的信息。我有身份证2、3和4。我想问一下这种关系可能吗?不知道从哪里开始 这在SQLAlchemy文档中称为,建议的模型结构如下:
class Node(Base):
__tablename__ = 'node'
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey('node.id'))
da
我是SQLAlchemy的新手,我正在尝试在数据库中设置relationship()。我正在查看SQLAlchemy文档。我还被告知,我必须使用back\u填充,而不是backref
我正在努力理解这一点
为什么uselist=False仅用于Parent模型的child关系?我认为在真正的一对一关系中,子模型在其父关系中也会有uselist=False
class Parent(Base):
__tablename__ = 'parent'
id = Column(Intege
我试图定义用户的多对多关系。我遵循了这些文件,我得到的最好结果是:
import sqlalchemy as sa
from sqlalchemy import orm
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Friends(Base):
__tablename__ = 'friends'
user1_id = sa.Column(sa.F
我在flask中有一个视图,当POST请求中的对象成功提交时,我想用它来显示success
在控制器中,我有
us = User(data_that_is_not_valid)
db_session.add(us)
db_session.commit()
到目前为止,db_commit()在无法提交对象时抛出异常。是否有一种更友好的方法只返回true或false来指定对象是否已添加到数据库而不引发错误
编辑:添加了异常的副本
Traceback (most recent call last):
我是炼金术新手
我正试着写这个选择
select job_id,
machine_id,
state_id,
min(begin_time) as begin_time
from job
where machine_id = 2
and state_id = 2
这是我第一次尝试写这个
session.query(Job).filter(and_(Job.begin_time==session.query(func.min(Job.beg
如何设置graphene sqlalchemy以按id过滤对象
我想运行查询:
{
marker(markerId: 1) {
markerId
title
}
}
我希望得到一个Marker对象,其中markerId为1,但在类型为“Query”的字段“Marker”上出现错误“Unknown argument”markerId”
我有两个文件:
schema.py
导入石墨烯
从graphene_sqlalchemy导入SQLAlchemyObject类型
从模型导
我在将事件侦听器与关系模型一起使用时遇到问题,我的模型类是一个自引用表:
class Distributor(Base):
__tablename__ = "distributors"
id = Column(Integer, primary_key=True)
name = Column(String, nullable = False)
upline_id = Column(Integer, ForeignKey('distributors.id'))
由于将有缺陷的sql查询直接粘贴到数据库管理工具(如phpmyadmin)中,以便在返回预期结果之前对其进行处理,可能会非常有效,
是否有任何方法可以检索Sqlalchemy Core假定传递给MySql数据库的最终sql语句,以随时可以执行的形式?这通常意味着您希望绑定的参数以内联方式呈现。对此自动提供的支持有限(从SQLA 0.9开始,这将起作用):
此外,您可能希望查询是特定于MySQL的,因此,如果您已经有了一个引擎,您也可以将其传入:
from sqlalchemy import cr
我一直在研究sqlalchemy的自我参照表。我已经阅读了很多次文档,但仍然难以理解remote\u-side的概念。有人能画一张图表或用一个类比来帮助解释这个概念吗?我认为可视化是一种更好的方式,但任何有帮助的都会被感激。谢谢
编辑:顺便说一下,在我看来,remote这个词有点模糊,因为它可以从不同的角度进行解释。就像单词left和rigt一样,它实际上取决于你面对的方向,我的right可能就是你的left。我对此不是很有信心,但我想把名字从远程端链接到多个端会有帮助吗?如果我在这里错了,请纠
我在python中有一个函数is_valid_id(id),它返回True或False。
我想在我的sqlalchmy查询内部筛选条件中使用此函数。我的问题如下
result=session.query(tableName).filter(有效吗?)id(id)==True.all()
这将导致以下错误
AttributeError: Neither 'Column' object nor 'Comparator' object has an attribute 'strip'
您能告诉我
为了满足我的需要,我使用了表间连接。在循环中,我需要检查条件的相关性,并在执行时将查询添加到最终选择中。请告诉我如何将满足条件的当前查询添加到“答案”选择中
这是我的密码:
def resolve_doops(self,info):
answer=[]
query = db.query(DOOP,Direction,Category,Category_DOOP)
query = query.join(Direction, Direction.
因此,在阅读之后,我尝试复制结果,但它不能正常工作。所以我的模型是
class Group(Base):
__tablename__='groups'
__table_args__={
'mysql_engine':'InnoDB',
'mysql_charset':'utf8',
}
id = Column(Integer, primary_key=True, unique=True)
name = Column(VARCHAR(30), primary_key=True,
我正在使用alembic来维护我的表。同时,我使用声明方式更新模型
这是alembic的表格之一:
op.create_table(
'groups',
Column('id', Integer, Sequence('group_id_seq'), primary_key=True),
Column('name', Unicode(50)),
Column('description', Unicode(250)),
)
模型如下所示:
class Group(B
我有两个SQLALchemy模型,它们之间存在多对多关系:
class Contact(db.Model):
id = db.Column(db.Integer, primary_key=True)
customer_id = db.Column(db.Integer)
users = db.relationship(ContactUser, cascade='all, delete-orphan')
class User(db.Model):
id =
我正在创建一个基于webapp2、SQLalchemy和postgresql的web应用程序
我的问题是:*如何在每次请求出现时创建SQLAlchemy会话对象(作用域_会话),并在发送响应时关闭同一对象*
通过阅读文档,我了解到这是创建和关闭会话对象的最佳方法。但是我不确定如何用WebApp2实现它。如果有人知道一种更好、更有效的方法,请告诉我
目前,我正在一个配置文件中创建一个作用域_会话obj,我导入该文件并在需要时使用obj。我没有关闭任何地方的物体,我想这不是一个好的做法。我想要实现的
SQLAlchemy使用\uuuuuuu tablename\uuuuuu映射类和数据库表名。然而,就我而言,可能有20多张桌子。它们之间唯一的区别是表名,所以我想重用相同的类CommonTable,以映射不同的表名。有什么办法吗?(只是想了解一下情况):完成后,当您想查询该类时,它是搜索所有表还是只搜索一个特定的表?如果您希望插入一条新记录,情况也是如此:您希望如何指定将插入该行的表?这20张表之间有什么区别?因为如果所有记录都保存在同一张表中,会浪费太多时间。对不起,但我比以前更迷路了…@v
查看sqlalchemy教程,我经常看到以
SomeClass.query.filter(...)
然后经常使用会话对象
session.query(SomeClass).count()
第一个符号的作用是什么,我想我总是需要一个会话来从数据库检索数据。第一个符号是使用时的快捷方式。使用声明性扩展时,可以方便地在基上指定它,但是可以将它应用于任何模型类,而无需声明性
为了启用它,应首先使用以下方法设置它:
Session = scoped_session(sessionmaker(bind=
我有一个自定义对象类型的表。我想在添加另一个实例时做到这一点,如果已经存在某个列匹配的行,那么整个旧行都会用新行更新
最好的方法是什么?
谢谢
我刚刚痛苦地安装了气流1.10感谢。我们只有一个ec2实例在运行,队列是AWS弹性缓存Redis,元数据库是AWS RDS for PostgreSQL。当我们使用Airflow 1.9版时,Airflow可以很好地使用此设置。但是,当我们启动调度程序时,在Airflow 1.10版上遇到了一个问题
[2018-08-15 16:29:14,015] {jobs.py:385} INFO - Started process (PID=15778) to work on /home/ec2-use
我有下面的一段代码,一个DB模型和一些混合属性和方法
class MyModel(DeclarativeBase):
"""
MyModel Table.
"""
__tablename__ = 'my_model'
x = Column(DateTime, nullable=False)
y = Column(DateTime, default = date(1970,1,1), nullable=False)
z =
在配置SQLAlchemy模型时,有人能帮我了解全局吗?这样就可以确保所有级别的引用完整性了
根据引用完整性应该由DB来表达和实施的想法,我创建了一个模式(目前在Postgresql中)以及我认为需要的所有约束,因此给我一个我信任的数据库将实施引用完整性
然后,我开始在这个数据库上构建一个应用程序,在声明模式下使用SQLAlchemy(0.7)
通过搜索和阅读,我了解到我可以配置:
onupdate/ondelete有关my Column()定义的规则
我的关系()定义上的级联选项,
这些似乎
我已经通读了查询文档,但没有看到任何地方可以从查询中获取表名——例如,如果我有q=query(Users),我可以从q中获取用户吗?请注意,像您这样的事件简单查询可能会涉及其他表,然后也会涉及其他用户,以防它们相关。因此,您需要对其进行迭代
以下内容应满足您的需要:
会导致这样的结果:
>>>Table('order', MetaData(bind=None), Column('id', Integer(), table=<order>, primary_key=T
我正试图从下面的网站上学习sqlalchemy教程
http://www.rmunn.com/sqlalchemy-tutorial/tutorial.html
在做select语句时,我真的被卡住了
根据教程,选择如下所示,但我不理解他在users.select中使用users.c.name=='John'的部分。语句中的users.c是什么
users.name就足够了吗
from sqlalchemy import *
# Let's re-use the same database
有没有办法通知SQLAlchemy,如果图形中的所有对象都存在PK,它应该执行更新
编辑:
我说的PK是指PK值我对你在这里使用“图形”有点困惑,如果你是指表,那么我想你需要这样的东西:
pk_exists_query = session.query(MyTable).filter(MyTable.id != None).all()
for record in pk_exists_query:
record.foo = #whatever
session.query(MyTable).
我已经为数据库w/SQLalchemy中表示的多态实体编写了石墨烯模型
问题很简单:
我想创建一个界面,反映我的SQLAlchemy Graphene模型,但也可以是a)实现节点或b)不与节点冲突,并允许我检索模型的ID,而无需添加。。。在节点{id}上创建查询字符串
必须从基于ORM的接口中排除ID字段,或者字段与节点接口冲突,这样做是为了获得ID,然后需要在节点{ID}上添加…这很难看
我创建了一个扩展graphene.Interface的SQLAlchemyInterface对象。我的许多
在SQLAlchemy中,我声明了两个具有复合主键的类,并希望它们之间有多对多关系。这:
课程主题(基础):
__tablename_uu='topic'
id=列(BigInteger,主键=True)
repo=列(字符串,主键=True)
类标签(基):
__tablename_uu='label'
repo=列(字符串,主键=True)
标题=列(字符串(25),主键=真)
类别主题标签(基本):
__tablename\uuuu='topic\u label'
topic\u id=C
如何按列分数从表中选择最小值和最大值?
会话查询是否可以实现这一点
class Player(Base):
username = Column(String)
score = Column(Integer)
# more not impoortant columns
对于需要查找分数字段的最小值和最大值的情况。您可以使用min和max函数进行一次查询:
from sqlalchemy.sql import func
qry = session.query(func.ma
在通常的CustomerwithOrders示例中,这种SQLAlchemy代码
data = db.query(Customer)\
.join(Order, Customer.id == Order.cst_id)\
.filter(Order.amount>1000)
…将提供与大订单(amount>1000)相关的客户模型实例。生成的客户实例还将包括他们的订单列表,因为在本例中,我们使用了backref,原因如下:
class Order:
...
我正在与一个简单的金字塔应用程序集成。我没有在应用程序中使用全局SQLAlchemy会话(我正在使用最新的alchemy scaffold)。然而,似乎没有其他直接的方式为定期任务提供会话
from huey import RedisHuey
huey = RedisHuey(password=os.environ.get('REDIS_PASSWORD', ''))
DBSession = scoped_session(sessionmaker())
@huey.periodic_tas
1 2 3 4 5 6 ...
下一页 最后一页 共 16 页