Questions tagged «sqlalchemy»

SQLAlchemy是Python SQL工具箱和对象关系映射器,为应用程序开发人员提供了SQL的全部功能和灵活性。

3
SQLAlchemy:引擎,连接和会话的区别
我使用SQLAlchemy并至少有三个实体:engine,session并且connection,其中有execute方法,所以如果我如想选择所有记录table我能做到这一点 engine.execute(select([table])).fetchall() 还有这个 connection.execute(select([table])).fetchall() 甚至这个 session.execute(select([table])).fetchall() -结果将是相同的。 据我了解,如果有人使用engine.execute它connection,它会创建,打开session(Alchemy会为您处理)并执行查询。但是,执行此任务的这三种方式之间是否存在全局差异?

10
使用SQLAlchemy ORM批量插入
有什么方法可以让SQLAlchemy进行批量插入,而不是插入每个对象。即 在做: INSERT INTO `foo` (`bar`) VALUES (1), (2), (3) 而不是: INSERT INTO `foo` (`bar`) VALUES (1) INSERT INTO `foo` (`bar`) VALUES (2) INSERT INTO `foo` (`bar`) VALUES (3) 我刚刚将一些代码转换为使用sqlalchemy而不是原始sql,尽管现在使用它起来要好得多,但现在似乎要慢一些(最多10倍),我想知道这是否是原因。 也许我可以更有效地使用会话来改善这种情况。目前,我已经添加了一些东西,autoCommit=False并做了一个session.commit()。尽管如果在其他地方更改了数据库,这似乎会使数据过时,例如,即使我执行新查询,我仍然可以返回旧结果? 谢谢你的帮助!

3
如何在Flask-SQLAlchemy中按ID删除记录
我users在MySql数据库中有表。这个表有id,name而且age领域。 如何删除某些记录id? 现在,我使用以下代码: user = User.query.get(id) db.session.delete(user) db.session.commit() 但是我不想在删除操作之前进行任何查询。有什么办法吗?我知道,我可以使用db.engine.execute("delete from users where id=..."),但是我想使用delete()方法。


11
ImportError:没有名为MySQLdb的模块
我指的是以下教程来为我的Web应用程序创建登录页面。 http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982 我的数据库有问题。我正在 ImportError: No module named MySQLdb 当我执行 http://127.0.0.1:5000/testdb 我已经尝试了所有可能的方法来安装python mysql,这是本教程中提到的一种,easy_install,sudo apt-get install。 我已经在虚拟环境中安装了mysql。我的目录结构与本教程中说明的目录结构相同。该模块已成功安装在我的系统中,但仍然出现此错误。 请帮忙。是什么原因造成的。


6
使用SQLAlchemy ORM高效地更新数据库
我正在启动一个新应用程序,并考虑使用ORM,尤其是SQLAlchemy。 假设我的数据库中有一列“ foo”,我想增加它。在直通sqlite中,这很容易: db = sqlite3.connect('mydata.sqlitedb') cur = db.cursor() cur.execute('update table stuff set foo = foo + 1') 我弄清楚了SQLAlchemy SQL-builder等效项: engine = sqlalchemy.create_engine('sqlite:///mydata.sqlitedb') md = sqlalchemy.MetaData(engine) table = sqlalchemy.Table('stuff', md, autoload=True) upd = table.update(values={table.c.foo:table.c.foo+1}) engine.execute(upd) 这稍微慢一点,但是没有太多。 这是我对SQLAlchemy ORM方法的最佳猜测: # snip definition of Stuff class made using declarative_base # snip creation …
116 python  orm  sqlalchemy 

9
SQLAlchemy:级联删除
我必须缺少SQLAlchemy的级联选项的琐碎内容,因为我无法获得简单的级联删除来正确操作-如果删除了父元素,则子级将保留并带有null外键。 我在这里放了一个简洁的测试用例: from sqlalchemy import Column, Integer, ForeignKey from sqlalchemy.orm import relationship from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class Parent(Base): __tablename__ = "parent" id = Column(Integer, primary_key = True) class Child(Base): __tablename__ = "child" id = Column(Integer, primary_key = True) parentid …

6
sqlalchemy flush()并获取ID?
我想做这样的事情: 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() 但是f.id是None我尝试的时候。我怎样才能使它工作?
114 python  sqlalchemy 

1
SQLAlchemy版本控制关心类的导入顺序
我在这里遵循指南: http://www.sqlalchemy.org/docs/orm/examples.html?highlight=versioning#versioned-objects 并遇到了一个问题。我的关系定义如下: generic_ticker = relation('MyClass', backref=backref("stuffs")) 使用字符串,因此它不在乎模型模块的导入顺序。这一切都正常工作,但是当我使用版本控制元时,出现以下错误: sqlalchemy.exc.InvalidRequestError:初始化映射程序Mapper | MyClass | stuffs时,表达式'Trader'找不到名称(“名称'MyClass'未定义”)。如果这是一个类名,请考虑在定义了两个从属类之后,将这个Relationship()添加到类中。 我跟踪到以下错误: File "/home/nick/workspace/gm3/gm3/lib/history_meta.py", line 90, in __init__ mapper = class_mapper(cls) File "/home/nick/venv/tg2env/lib/python2.6/site-packages/sqlalchemy/orm/util.py", line 622, in class_mapper mapper = mapper.compile() class VersionedMeta(DeclarativeMeta): def __init__(cls, classname, bases, dict_): DeclarativeMeta.__init__(cls, classname, bases, dict_) try: mapper = class_mapper(cls) _history_mapper(mapper) except UnmappedClassError: …
111 python  sqlalchemy 

5
SQLAlchemy ORM转换为Pandas DataFrame
这个话题已经有一段时间没有在这里或其他地方了。是否有将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。 有什么可能吗?


3
SQLAlchemy:如何过滤日期字段?
这是模型: class User(Base): ... birthday = Column(Date, index=True) #in database it's like '1987-01-17' ... 我想在两个日期之间进行过滤,例如选择间隔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 我知道这是不正确的,但是该怎么做正确呢?
105 python  sql  database  orm  sqlalchemy 

3
sqlalchemy不为空选择
如何像在SQL中一样添加过滤器,以从特定列中选择非空值? SELECT * FROM table WHERE YourColumn IS NOT NULL; 如何使用SQLAlchemy过滤器执行相同操作? select = select(table).select_from(table).where(all_filters)
104 python  sqlalchemy 

11
目标数据库不是最新的
我想迁移一个Flask应用程序。我正在使用Alembic。 但是,我收到以下错误。 Target database is not up to date. 在网上,我读到它与此有关。 http://alembic.zzzcomputing.com/zh-CN/latest/cookbook.html#building-an-up-to-date-database-from-scratch 不幸的是,我不太了解如何使数据库保持最新状态,以及在何处/如何编写链接中给出的代码。如果您有迁移的经验,能否请您为我解释一下 谢谢

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.