使用Python 3.3.0和SQLAlchemy 0.8.0时出现一个奇怪的错误:

from sqlalchemy import create_engine, Integer, String, Text, Column, Sequence, DateTime, ForeignKey
from sqlalchemy.orm import sessionmaker, relationship, backref
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine("sqlite:///:memory:", echo=True)
Session = sessionmaker(bind = engine)
Base = declarative_base()

class Product(Base):
    __tablename__ = "products"

    id = Column(Integer, primary_key=True)
    name = Column(String(200))
    description = Column(Text)

Base.metadata.create_all(engine)

session = Session()
product = Product()
product.id = 1
product.name = "Test"
product.description = "Test"

session.add(product)
print(product in session) # Expected true
session.commit()
print(session.query(Product).all()) # Expected the previous item

如代码中所述,我期望使用INSERT将产品添加到数据库的add方法。 但是它也不会抛出异常。 这是日志:

2013-04-16 18:03:14,368 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("products")
2013-04-16 18:03:14,369 INFO sqlalchemy.engine.base.Engine ()
2013-04-16 18:03:14,371 INFO sqlalchemy.engine.base.Engine 
CREATE TABLE products (
    id INTEGER NOT NULL, 
    name VARCHAR(200), 
    description TEXT, 
    PRIMARY KEY (id)
)


2013-04-16 18:03:14,371 INFO sqlalchemy.engine.base.Engine ()
2013-04-16 18:03:14,371 INFO sqlalchemy.engine.base.Engine COMMIT
False
2013-04-16 18:04:04,706 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2013-04-16 18:04:04,708 INFO sqlalchemy.engine.base.Engine SELECT products.id AS products_id, products.name AS products_name, products.description AS products_description 
FROM products
2013-04-16 18:04:04,709 INFO sqlalchemy.engine.base.Engine ()
[]

我已经尝试了几件事:

  • 更换引擎无效。 我也尝试了postgresql。
  • 我尝试调试。 当我到达add方法的正文时,没有什么可涉足的。

我是在做错什么还是错误?

===============>>#1 票数:0 已采纳

该问题似乎是特定于Python版本的问题。 使用Python 3.3.1解决了这个问题。

  ask by Tim translate from so

未解决问题?本站智能推荐:

2回复

Session.add()在SqlAlchemy(Python2.7)上不起作用

我正在使用SqlAlchemy-1.0.9和python 2.7。 因此,当我尝试向会话中添加对象时,什么也没有发生,因此数据没有插入数据库中。 我正在使用mysql和oursql。 下面的一些代码: 首先,我创建一个函数来创建“创建引擎”等...,并且每次我要创建会话时都使
1回复

SQLAlchemy会话包含我的信息,而没有session.add()

我很困惑。 我忘了加 db.session.add(newbranch) 转到下面的代码,只是为了发现它,就像我运行commit()一样,它已经存在于会话中了。 我的研究表明,需要添加新项目。 嗯,正如您在下面的代码中看到的那样,我正在创建新项目,但未添加它们,但是它
1回复

SqlAlchemy session.add()会导致内存不足吗?

我的python脚本中有一个无限循环,看起来像这样: 我的脚本需要不断地向数据库中插入行,并且一切正常,我遇到的问题是由于我的内存不足,我的脚本被Linux杀死了,所以SqlAlchemy的方法可以成为我的脚本被破坏的原因吗?被杀?
1回复

SQLAlchemy session.add()不更新

在数据库中的session.add(get_user)和session.commit()值不更新之后,该函数使用表的单元格获取一个类(我需要使用另一个类来使用用户数据) 可能是get_user.__dict__.update(user.__dict__) 但我没有其他解决方案
1回复

Sqlalchemy - 向查询添加列

例如,我正在使用chinook数据库,我想将Name字段转换为slug。 Slugify是一个来自awesome-slugify的功能。 在SQL中有这样的东西 在sqlalchemy我尝试过: 和 我可以通过在终端中执行以下操作来生成名称slug列表:
2回复

正确使用sqlalchemy scoped_session和金字塔模型

我在寻找使用数据库查询的正确方法时遇到问题。 我没有太多的Web开发经验,就像下班后要工作6个月(所以每周最多工作10个小时)。 我之所以选择Pyramid,主要是因为Py3k支持。 它没有Django那样的社区支持,也没有教程,所以我做错了事。 所以... 我正在使用Pyrami
2回复

如何根据请求创建SQLAlchemy数据库会话

我有一个多租户python falcon应用程序。 每个租户都有自己的数据库。 根据传入的请求,我需要连接到租户数据库。 但是这里有一种情况。 数据库配置存储在另一个服务上,并且配置会定期更改。 我在进程资源之前尝试了会话创建。 但是此更改后,sql查询速度变慢。 为了更快
1回复

使用SQLAlchemy跨多个模块处理scoped_session

我是使用SQLAlchemy的新手,我正在研究一个复杂的ETL过程,所以我做了以下简化的代码: module1.py module2.py main_script.py 所以我有一个带工人流程的池。 当我调用main_script.run()每个worker都在s
2回复

在python asyncio中正确使用sqlalchemy scoped_session

我正在使用asyncio构建应用程序。 我将使用sqlalchemy作为orm。 据我了解,scoped_session将一个会话与一个线程相关联,这样它们就不会与彼此的操作有关。 现在,由于asyncio在单个线程上工作,并且我相信scoped_session无法正常工作,这会引起问题。
1回复

如何在sqlalchemy更新查询中添加自定义列名称?

我有以下问题: 我在python方法中使用sqlalchemy,如下所示: def update_icao_airport_id(self, airport_sys_id, project_sys_id, custom_column, value): """