【python – 使用SQLAlchemy批量upsert】教程文章相关的互联网学习教程文章

python – 来自IntegrityError的Sqlalchemy session.rollback会导致queuepool用完处理程序吗?【代码】

我有下表:class Feedback(Base):__tablename__ = 'feedbacks'__table_args__ = (UniqueConstraint('user_id', 'look_id'),)id = Column(Integer, primary_key=True)user_id = Column(Integer, ForeignKey('users.id'), nullable=False)look_id = Column(Integer, ForeignKey('looks.id'), nullable=False)我目前在这个表中插入了很多条目,违反了UniqueConstraint. 我使用以下代码:for comment in session.query(Comment).filter(...

python – sqlalchemy:ObjectdereferencedError【代码】

我有一个烧瓶应用程序,我做了一堆所有关系相互关联的类: 用户课程演讲注意队列财富 所以我正在尝试做一个新的讲座和笔记,我为每件事都定义了一个方法. 创建注释def createPad(user,course,lecture):lecture.queues.first().users.append(user)# make new etherpad for user to wait innewNote = Note(dt) # init also creates a new pad at /p/groupID$noteIDdb.session.add(newNote)#db.session.commit()# add note to user, cou...

mysql – python:sqlalchemy – 如何使用新的事件系统确保连接不会过时【代码】

我在python中使用sqlalchemy包.在现有表上执行自动加载后,我的操作需要一些时间才能执行.当我尝试使用连接时,这会导致以下错误:sqlalchemy.exc.OperationalError: (OperationalError) (2006, 'MySQL server has gone away')我有一个简单的实用程序函数执行多次插入:def insert_data(data_2_insert, table_name):engine = create_engine('mysql://blah:blah123@localhost/dbname')# Metadata is a Table catalog. metadata = Meta...

python – SQLAlchemy核心连接上下文管理器【代码】

我可以为SQLAlchemy Core连接使用上下文管理器吗?换句话说,是conn = engine.connect() conn.execute('SELECT * FROM FOO') conn.close()同样的with engine.connect() as conn:conn.execute('SELECT * FROM FOO')我不需要在上下文管理器出口处检查提交,回滚等.解决方法:您可以使用连接作为上下文管理器. 有关如何实现,请参阅连接的__enter__和__exit__方法. __enter__只返回self和__exit__调用close. 或者你可以尝试一下:from sql...

python – 在sqlalchemy中加入的混合属性【代码】

我可能没有完全掌握@hybrid_property的用法.但我尝试做的是使基于另一个表中的列访问计算值变得容易,因此需要连接. 所以我拥有的是这样的东西(虽然有效,但很尴尬并且感觉不对):class Item()::@hybrid_property def days_ago(self):# Can I even write a python version of this ?pass@days_ago.expression def days_ago(cls):return func.datediff(func.NOW(), func.MAX(Event.date_started))这需要我在需要使用days_ago属性时由调...

python – 我应该如何在瓶子应用程序中使用sqlalchemy会话以避免在查询期间“丢失与MySQL服务器的连接”【代码】

我的瓶子/ sqlalchemy应用程序托管在pythonanywhere.com上,不确定这是否重要,我希望不是.在我离开它一段时间之后,应用程序抛出’在查询期间丢失与MySQL服务器的连接’.然后我刷新它,它工作正常. 请注意,我也没有sqlachemy实现相同的查询,仅使用MySQLdb.该实现始终工作正常,它从不抛出异常,因为它每次都建立一个新的连接. 我假设,在像pythonanywhere这样的托管环境中,我无法摆弄可能影响此错误的mysql配置,例如max_allowed_pa??cket...

python – 使用ORM,声明式样式和关联对象在SQLAlchemy中递归选择(具有有限深度)关系【代码】

鉴于:DIRECTIONS = db.Enum('N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW',name='directions')class Exit(BaseModel):__tablename__ = 'exits'src = db.Column(db.Integer, db.ForeignKey('room.id'), primary_key=True)dst = db.Column(db.Integer, db.ForeignKey('room.id'), primary_key=True)direction = db.Column(DIRECTIONS, primary_key=True)from_room = db.relationship('Room', foreign_keys=[dst],backref=db.backref(...

python – 在多个uWSGI进程中使用Flask-SQLAlchemy【代码】

我一直在我的Flask应用程序中遇到持久性错误:OperationalError: (_mysql_exceptions.OperationalError) (2006, 'MySQL server has gone away')我正在使用mySQL服务器实例和Flask-SQLAlchemy模块.我仔细检查了mySQL实例上的连接的到期时间以及SQLAlchemy配置中的重置时间.没有问题,在mySQL连接到期之前重置连接池.我得出结论,必须有一些问题导致连接关闭,然后该连接的下一个用户窒息. 我正在使用生成四个进程的uWSGI来运行Flask应用...

python – 使用SQLAlchemy MetaData获取现有表【代码】

我有一个已经存在的表:USERS_TABLE = Table("users", META_DATA,Column("id", Integer, Sequence("user_id_seq"), primary_key=True),Column("first_name", String(255)),Column("last_name", String(255)))我通过运行这个创建了这个表:CONN = create_engine(DB_URL, client_encoding="UTF-8") META_DATA = MetaData(bind=CONN, reflect=True) # ... table code META_DATA.create_all(CONN, checkfirst=True)它第一次工作,我能够...

python – 熟悉SQLAlchemy的最简单方法/最佳教程是什么?

启动SQLAlchemy的最佳资源/教程是什么?也许一些简单的一步一步的东西,比如创建一个简单的表并使用它并从那里上升.解决方法:就个人而言,我会在一周左右的时间内购买this book并将其塞入noggin. 我已经尝试在工作中处理SQLAlchemy而不先了解细节.我很难用它,因为我发现在线文档稀疏而神秘(“阅读更多信息来源……”). SA还提供了几个级别的抽象,您可以在其中工作,我不相信我曾经在正确的水平上工作.

python – 与SQLAlchemy上的复合键有很多关系【代码】

假设我有以下型号:class Molecule(Base):db = Column(Integer, primary_key=True)id = Column(Integer, primary_key=True)data = Column(Integer)class Atom(Base):id = Column(Integer, primary_key=True)weight = Column(Integer)我想在Molecule和Atom之间建立多对多的关系,最好的方法是什么?请注意,Molecule的主键是复合的. 谢谢解决方法:好的,终于弄明白了怎么做,多对多关系表应该这样定义:molecule2atom = Table('molecule...

python – Sqlalchemy – 根据另一列的更改更新列【代码】

我正在使用sqlalchemy,但发现难以搜索的文档. 我有这两列:verified = Column(Boolean, default=False)verified_at = Column(DateTime, nullable=True)我想创建一个像这样的函数:if self.verified and not oldobj.verified:self.verified_at = datetime.datetime.utcnowif not self.verified and oldobj.verified:self.verified_at = None我不知道在哪里放这样的代码.我可以把它放在应用程序中,但更喜欢模型对象处理这个逻辑.解决...

python – Flask和SQLalchemy NoForeignKeysError:无法确定关系User.posts上的父/子表之间的连接条件【代码】

我开始使用Mega Flask教程来构建一个简单的博客风格网站.我用这个与一些python学习相关,试图加强我学到的东西.为了更多地学习,我决定将教程弃用OAuth登录文章转换为传统的登录栏.当我尝试登录时,我遇到了一个问题. NoForeignKeysError:无法确定关系User.posts上的父/子表之间的连接条件 – 没有链接这些表的外键.确保引用列与ForeignKey或ForeignKeyConstraint相关联,或指定“primaryjoin”表达式. 由于我对Python的理解有限,我在...

python – SQLAlchemy – 当count()表示还有更多结果时,只返回一个结果【代码】

我遇到一个非常大的结果集只有返回一行的问题.Session.query(TestSet).join(Instance).count() >> 4283878 Session.query(TestSet).join(Instance).offset(0).limit(100).count() >> 100 Session.query(TestSet).join(Instance).offset(0).limit(100).all() >> [<model.testset.TestSet object at 0x043EC2F0>]也就是说,all只返回我模型的一个实例,而不是100.现在,对于一些更奇怪的东西:len(Session.query(TestSet).join(Instance...

python – 如果我只打算使用MySQL,如果速度是优先考虑的,有没有令人信服的理由使用SQLAlchemy?

如果我使用的是MySQL,那么SQLAlchemy似乎非常重量级. 为什么在仅使用MySQL的应用程序中使用SQLAlchemy有令人信服的理由.解决方法:ORM意味着您的OO应用程序在被解释为对象的交互时实际上是有意义的. 没有ORM意味着您必须沉迷于SQL和对象之间的阻抗不匹配.在没有ORM的情况下工作意味着在SQL查询结果集,单个SQL语句和对象之间映射大量冗余代码. SQLAchemy将您的应用程序干净地划分为交互的对象和(现在)碰巧是关系数据库的持久性机制. ...