【python – 处理与SQLAlchemy的事务冲突】教程文章相关的互联网学习教程文章

python使用sqlalchemy将列表存储到sql数据库中【代码】

简短的代码是这样的:class Word(Base):__tablename__ = 'word'eng = Column(String(32),primary_key=True)chinese = Column(String(128))word = Word(eng='art',chinese=[u'艺术',u'美术']) session.add(word) session.commit()我正在尝试将word.chinese存储为字符串.在python中它是一个列表……好吧,当我自己写sql时,我可以str(word.chinese)然后插入数据库.当需要得到它时,我可以简单地使用eval(re...

python – 在循环中使用SQLAlchemy Session对象提交数据时出现问题【代码】

我有一个数据库提交SQLalchemy的问题.这是我的场景我有一个要添加到表中的记录列表.将记录添加到表中后,我需要获取插入的记录Id并在第二个表中执行另一个插入.我在单个会话下进行这些操作.代码结构如下所示,因为我不允许给出代码 创建会话对象 循环要插入的记录列表:do the session.add(obj)session.commit()get obj.iddo the session.add(obj2) # with obj2 having the id from the objsession.commit()如果我们有多条记录,那么只...

python – SQLAlchemy查询返回无【代码】

我在我的ubuntu 16& 16上有一个使用SQLAlchemy和MySQL-server的Web应用程序. Nginx uwsgi. 在创建引擎的同时,我放了echo=True获取查询的跟踪.我有注册用户的问题,每次在flask登录时调用user_loader,我执行:dbsession.query(User).filter_by(id=user_id).first()我得到的结果是:INFO sqlalchemy.engine.base.Engine SELECT user.id AS user_id, user.name AS user_name, user.email AS user_email, user.pass$ Mar 29 23:48:56 ub...

python – SQLAlchemy:“如果不存在则创建模式”【代码】

我想在SQLAlchemy中执行“CREATE SCHEMA IF NOT EXISTS”查询.有没有比这更好的方法:engine = sqlalchemy.create_engine(connstr)schema_name = config.get_config_value('db', 'schema_name')#Create schema; if it already exists, skip thistry:engine.execute(CreateSchema(schema_name))except sqlalchemy.exc.ProgrammingError:pass我使用的是Python 3.5.解决方法:我有同样的问题和答案,我发现,是:if not engine.dialect.h...

python – SQLAlchemy渴望加载递归模型【代码】

你怎么能写出它渴望以递归方式加载父母和某个角色的孩子的模型.所以不仅是你现在扮演的角色的孩子,而且还是孩子. 您是否冒险以无限循环结束或SQLAlchemy是否具有检测这些的逻辑? SQLAlchemy模型如下:from sqlalchemy.ext.declarative import declarative_baseroles_parents = Table( 'roles_parents', Base.metadata, Column('role_id', Integer, ForeignKey('roles.id')), Column('parent_id', Integer, ForeignKey('roles.id')...

python – SQLAlchemy:选择多个表【代码】

我想优化我的数据库查询:link_list = select(columns=[link_table.c.rating, link_table.c.url, link_table.c.donations_in],whereclause=and_(not_(link_table.c.id.in_(select(columns=[request_table.c.recipient],whereclause=request_table.c.donator==donator.id).as_scalar())),link_table.c.id!=donator.id,),limit=20, ).execute().fetchall()并尝试在一个查询中合并这两个选择:link_list = select(columns=[link_table...

python – 带有init连接的数据库上的sqlalchemy的Utf-8

我试图使用sqlalchemy连接mysql数据库.我已经设置了charset = utf-8 $use_unicode = 0.这适用于几乎所有数据库,但不适用于特定数据库.我相信这是因为它将’init-connect’变量设置为’SET NAMES latin2;’我无权改变这一点. 如果我发送显式查询SET NAMES utf8,它对我有用,但是如果存在时间断开连接,那么在重新连接我的程序后再次中断,因为它从服务器获得lati2编码的数据. 当sqlalchemy连接时,是否可以创建一些钩子来始终发送SET NA...

python – 如何在分配给未映射到SQLAlchemy列的属性时引发异常?【代码】

使用SQLAlchemy,我发现有时候我错误地键入了一个映射到列的属性的名称,这导致很难捕获错误:class Thing(Base):foo = Column(String)thing = Thing() thing.bar = "Hello" # a typo, I actually meant thing.foo assert thing.bar == "Hello" # works here, as thing.bar is a transient attribute created by the assignment above session.add(thing) session.commit() # thing.bar is not saved in the database, obviously ......

python – 如何防止在SQLAlchemy中更新/删除特定的类?【代码】

假设我有类Dog(),Walrus(),Boot().我想做它,所以你不能更新Walrus对象,虽然你可以删除它们,你永远不能删除Boot对象.如果这样做:dog1 = Dog("DogName") walrus1 = Walrus("WalrusName") boot1 = Boot("BootName") session.add(dog1) session.add(walrus1) session.add(boot1) session.flush() transaction.commit() dog1.name = "Fluffy" walrus1.name = "Josh" boot1.name = "Pogo" session.flush() transaction.commit()它会在更...

python – SQLAlchemy密钥的身份映射中已存在冲突状态【代码】

我正在使用围绕SQLAlchemy的Flask-SqlAlchemy扩展来使用Python中的SQLite数据库. 我在“格式”和“电影”模型之间建立了多对多关系.我已成功设置关系并执行查询没有问题.当我尝试更新电影的格式时会出现问题.调用我的更新方法会导致AssertionError:密钥的身份映射中已存在冲突状态(< classmoviecode.models.Format>,(1,)) 此错误使我认为SQLAlchemy会话未在更新调用/ db查询之间正确删除/清除,但添加remove()调用没有帮助. mainap...

python – 在Flask-SQLAlchemy中的同一个类中使用不同的绑定【代码】

我目前有多个具有相同表和列的数据库(但内部有不同的数据).显然我需要使用绑定来访问所有这些,但它显然不像这样做:class WhateverTable(db.Model):__tablename__ = 'whatevertable'whatever = db.Column(db.String(255))def __init__(self, bind=None):self.__bind_key__ = bind然后打电话:WhateverTable(bind='bind_key_here').query.filter_by(whatever='whatever').first()我有办法轻松地做到这一点吗?我尝试从表类继承,然后...

python – 检查sqlalchemy中的表兼容性【代码】

我声明了一些表示远程数据库的表. 我想检查我的表定义是否与我连接的远程数据库匹配. 我有以下功能:def verify_db_tables(conn, metadata):"""checks that the tables declared in metadata are actually in the db"""for table in metadata.tables.values():check = sqlalchemy.MetaData()check.reflect(conn, table.schema, True, (table.name,))check = check.tables[table.key]for column in table.c:if column.name not in c...

python – 在Flask中动态创建和保存模型 – Sqlalchemy【代码】

我正在写一个烧瓶webapp.我需要能够基于用户输入创建模型并基于模型创建表.此外,我还希望以后能够使用该模型(在重新启动Web服务器之后).这样做的最佳方式是什么? 我正在使用带有sqlalchemy的烧瓶进行ORM.解决方法:你将有很多动态查询man. 你见过INFORMATION_SCHEMA.tables and INFORMATION_SCHEMA.columns的样子吗? 基本上,您将使用它们或在数据库中创建这些表的克隆. 然后,您将从这些表中读取信息,以动态执行以下操作:from sql...

python – sqlalchemy:null比较交换性【代码】

我只是偶然发现了sqlalchemy的这种行为:>>> from sqlalchemy import Column, null>>> print(Column("x") == null()) x IS NULL >>> print(Column("x") == None) x IS NULL>>> print(null() == Column("x")) NULL = x >>> print(None == Column("x")) x IS NULL有人可以解释为什么在使用None时,==对于null()是不可交换的?目的是什么?解决方法:首先,请查看Identity vs. Equailty,了解为什么None条件都返回x IS NULL. null()子句返...

python – 使用Marshmallow模式过滤sqlalchemy表更新【代码】

我正在Flask中开发api,使用Marshmallow进行序列化/反序列化/验证,使用SQLAlchemy作为我的ORM. 在我的更新功能中,我想限制可以更新的字段,例如我不希望用户此刻能够更改他们的电子邮件. 为了实现这一点,我设置了一个模式(UserSchema),其字段受元组(UserSchemaTypes.UPDATE_FIELDS)限制.元组不包含电子邮件. 我遇到的问题是电子邮件是我的数据库中用户行的必填字段. 因此,当我使用模式(users_schema.load(user_json))创建User模型对象...