使用SQLAlchemy 0.5.8如何运行一个max查询? 即Select max(id) from some_table
我有一个logging,如果它不存在,如果它已经存在(主键存在),我想要存在数据库中的字段被更新为当前状态。 这通常被称为upsert 。 下面的不完整的代码片段演示了什么可以工作,但似乎过于笨重(特别是如果有更多的列)。 什么是更好/最好的方式? Base = declarative_base() class Template(Base): __tablename__ = 'templates' id = Column(Integer, primary_key = True) name = Column(String(80), unique = True, index = True) template = Column(String(80), unique = True) description = Column(String(200)) def __init__(self, Name, Template, Desc): self.name = Name self.template = Template self.description = Desc def UpsertDefaultTemplate(): sess = […]
我只是想以编程方式确定一个SQLalchemy模型的主键的名称。
有两个(三个,但我不算Elixir ,因为它不是“官方”)用SQLAlchemy定义一个持久对象的方法: 映射器对象的显式语法 from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey from sqlalchemy.orm import mapper metadata = MetaData() users_table = Table('users', metadata, Column('id', Integer, primary_key=True), Column('name', String), ) class User(object): def __init__(self, name): self.name = name def __repr__(self): return "<User('%s')>" % (self.name) mapper(User, users_table) # <Mapper at 0x…; User> 声明语法 from sqlalchemy.ext.declarative import declarative_base […]
我有一个使用sqlalchemy(在Pylons内)的Web应用程序。 我需要有效地改变模式,至less每天可以更改生产版本,也许更多,而不会丢失数据。 我已经在周末结束了一些平移的工作,我会说这给了我一个不好的印象。 首先, 我认为它不能帮助两个数据库引擎之间的迁移 ; 这是sqlalchemy可以完成的。 其次,这些文档似乎并不是最新的。 我不得不改变一些命令行选项,比如在每个命令中提供版本库path,这可能是一个迁移的错误。 但最糟糕的是它的“manage.py testing ”命令。 不仅它实际上修改了数据库 (在文档中明确指出了这一点,所以我不能指责迁移),但是我的第一个迁移脚本只是简单地进行了笨拙的模式迁移,使升级后的降级数据库与原来的模式不同 。 但是“manage.pytesting”只是回答了类似的问题 success ! 也就是说,它甚至不检查模式是否处于一致状态。 那么是否值得使用迁移? 与S.Lott提出的与良好实践相关的Do It Yourself方法相比,有没有什么优势? 是否有替代sqlalchemy-migrate实际上简化了迁移过程,或者我只是试图使用先前不好的迁移(然后请告诉我为什么不明显优于上面链接中build议的创buildCSV列)? 非常感谢!
问候 , 我试图在Flask-SQLAlchemy中创build一个多对多的关系,但似乎我不知道如何填充“多对多标识符数据库” 。 你能帮我理解我做错了什么,应该怎么看? class User(db.Model): __tablename__ = 'users' user_id = db.Column(db.Integer, primary_key=True) user_fistName = db.Column(db.String(64)) user_lastName = db.Column(db.String(64)) user_email = db.Column(db.String(128), unique=True) class Class(db.Model): __tablename__ = 'classes' class_id = db.Column(db.Integer, primary_key=True) class_name = db.Column(db.String(128), unique=True) 然后我的标识符数据库: student_identifier = db.Table('student_identifier', db.Column('class_id', db.Integer, db.ForeignKey('classes.class_id')), db.Column('user_id', db.Integer, db.ForeignKey('users.user_id')) ) 到目前为止,当我尝试将数据插入数据库时,它看起来像这样。 # User user1 = User( user_fistName='John', […]
# ! /usr/bin/env python # -*- coding: utf-8 -*- # login_frontend.py """ Python 2.7.3 Cherrypy 3.2.2 PostgreSQL 9.1 psycopy2 2.4.5 SQLAlchemy 0.7.10 """ 我在join一个Python / SQLAlchemy类中的四个表时遇到问题。 我试着这样做,所以我可以遍历这个类的实例,而不是通过ORM连接表获得的名称元组。 为什么这一切? 因为我已经开始这么做了,所以我走得太远了,放弃了。 另外,它必须是可能的,所以我想知道它是如何完成的。 对于这个项目(cherrypy web-frontend),我得到了一个已经完成的表类的模块。 我把它移到了这篇文章的底部,因为也许这对你来说甚至是不必要的。 以下仅是联合多表类尝试的一个示例。 我选了一个不止两个表格和一个联结表的简单情况。 在这里,我不写入这些连接的表,但它是必要的其他地方。 这就是为什么课程将是这个问题的一个很好的解决scheme。 我的一个联合class的尝试, 这是给定的表类模块和这两个网站的例子的组合: – 将一个类映射到多个表 – SQLAlchemy:一个类 – 两个表 class JoinUserGroupPerson (Base): persons = md.tables['persons'] users = md.tables['users'] user_groups […]
我正在开发基于现有数据库的Pylons应用程序,所以我正在使用reflection。 我有一个SQL文件与我用来创build我的testing数据库的架构。 这就是为什么我不能简单地使用drop_all和create_all 。 我想写一些unit testing,并且在每次testing之后,我都遇到了清除数据库内容的问题。 我只是想删除所有的数据,但保持完整的表。 这可能吗? 应用程序使用Postgres,这也是必须使用的testing。
我目前正在开发一个基于flask的应用程序。 它运行良好,使用app.run()手动产生服务器。 我试过现在通过mod_wsgi运行它。 奇怪的是,我得到了一个500错误,并没有在日志中。 我已经调查了一下,这里是我的发现。 插入一行像print >>sys.stderr, "hello"按预期工作。 该消息显示在错误日志中。 在不使用模板的情况下调用一个方法时,它的工作原理就好 没有500错误。 使用简单的模板也可以。 但是 ,只要我触发模板内的数据库访问(例如循环查询),我得到的错误。 我的直觉告诉我,这是SQLAlchemy发出错误,也许一些日志configuration导致日志在应用程序的某个点被丢弃。 另外,为了testing,我正在使用SQLite。 据我所知,这只能从一个线程访问。 所以,如果mod_wsgi产生更多的线程,它可能会破坏应用程序。 我有点不知所措,因为它只能在mod_wsgi后面运行,这似乎也吞噬了我的错误。 我能做些什么来使错误冒泡到Apache的error_log? 作为参考,代码可以在这个github永久链接 。
我有以下SQLAlchemy映射的类: class User(Base): __tablename__ = 'users' email = Column(String, primary_key=True) name = Column(String) class Document(Base): __tablename__ = "documents" name = Column(String, primary_key=True) author = Column(String, ForeignKey("users.email")) class DocumentsPermissions(Base): __tablename__ = "documents_permissions" readAllowed = Column(Boolean) writeAllowed = Column(Boolean) document = Column(String, ForeignKey("documents.name")) 我需要得到这样的表user.email = "user@email.com" : email | name | document_name | document_readAllowed | document_writeAllowed 如何使用SQLAlchemy的一个查询请求? […]