Questions tagged «sqlalchemy»

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

2
调试(显示)SQLAlchemy发送到数据库的SQL命令
我有一个称为Person的ORM类,它包装一个person表: 设置与db等的连接后,我运行以下语句: people = session.query(Person).all() 人员表尚不包含任何数据,因此,当我打印变量时people,我得到一个空列表。 我将在ORM类中引用的表重命名People为people_foo(不存在)。 然后,我再次运行脚本。我很惊讶在尝试访问不存在的表时没有引发异常。 因此,我有以下两个问题: 如何设置SQLAlchemy,以便将db错误传播回脚本? 如何查看(即打印)发送到数据库引擎的SQL? 如果有帮助,我正在使用PostgreSQL。 [编辑] 我在写包裹。在我的__main__.py脚本中,我有以下代码(此处缩短): ### __main__.py import common # imports logging and defines logging setup funcs etc logger = logging.getLogger(__name__) def main(): parser = OptionParser(usage="%prog [options] <commands>", version="%prog 1.0") commands = OptionGroup(parser, "commands") parser.add_option( "-l", "--logfile", dest="logfile", metavar="FILE", help="log to …

5
SQLAlchemy等效于SQL“ LIKE”语句
标签列具有“苹果香蕉橙”和“草莓香蕉柠檬”之类的值。我想找到等效的SQLAlchemy语句 SELECT * FROM table WHERE tags LIKE "%banana%"; 我应该怎么Class.query.filter()做才能做到这一点?

3
SQLAlchemy查询仅返回n个结果?
我一直在搜索和阅读SQLAlchemy文档,但没有找到我想要的东西。 我正在SQLAlchemy中寻找一个函数,该函数将查询返回的结果数限制为一定数目,例如:5?像first()或all()。
84 sqlalchemy 

1
declarative_base()和db.Model有什么区别?
Flask-SQLAlchemy插件的快速入门教程指导用户创建继承db.Model该类的表模型,例如 app = Flask(__main__) db = SQLAlchemy(app) class Users(db.Model): __tablename__ = 'users' ... 但是,SQLAlchemy教程和bottle-SQLAlchemy README都建议表模型继承从Base实例化declarative_base()。 Base = declarative_base() class Users(Base): __tablename__ = 'users' ... 这两种方法有什么区别?

4
跨文件的SQLAlchemy类
我试图弄清楚如何将SQLAlchemy类分布到多个文件中,而我可以终生不搞清楚如何做到这一点。我是SQLAlchemy的新手,如果这个问题不重要,请原谅我。 在各自的文件中考虑以下三个类: A.py: from sqlalchemy import * from main import Base class A(Base): __tablename__ = "A" id = Column(Integer, primary_key=True) Bs = relationship("B", backref="A.id") Cs = relationship("C", backref="A.id") B.py: from sqlalchemy import * from main import Base class B(Base): __tablename__ = "B" id = Column(Integer, primary_key=True) A_id = Column(Integer, ForeignKey("A.id")) …



1
什么时候需要使用sqlalchemy back_populates?
当我尝试按照本指南进行SQLAlchemy Relation Example时:基本关系模式 我有这个代码 #!/usr/bin/env python # encoding: utf-8 from sqlalchemy import create_engine from sqlalchemy import Table, Column, Integer, ForeignKey from sqlalchemy.orm import relationship, sessionmaker from sqlalchemy.ext.declarative import declarative_base engine = create_engine('sqlite:///:memory:', echo=True) Session = sessionmaker(bind=engine) session = Session() Base = declarative_base(bind=engine) class Parent(Base): __tablename__ = 'parent' id = Column(Integer, …

4
sqlalchemy过滤多列
如何合并两列并应用过滤器?例如,我要同时搜索“名字”和“姓氏”列。如果仅搜索一列,这就是我的操作方式: query = meta.Session.query(User).filter(User.firstname.like(searchVar))

3
为什么SQLAlchemy用sqlite插入比直接使用sqlite3慢25倍?
为什么这个简单的测试用例用SQLAlchemy插入100,000行比直接使用sqlite3驱动程序慢25倍?我在现实世界的应用程序中看到过类似的减速情况。难道我做错了什么? #!/usr/bin/env python # Why is SQLAlchemy with SQLite so slow? # Output from this program: # SqlAlchemy: Total time for 100000 records 10.74 secs # sqlite3: Total time for 100000 records 0.40 secs import time import sqlite3 from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String, create_engine from …

3
Flask SQLAlchemy多对多插入数据
我试图在Flask-SQLAlchemy中建立多对多关系,但似乎我不知道如何填写“多对多标识符数据库”。您能帮我了解我在做什么错以及应该怎么看吗? 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( …

7
如何使用SqlAlchemy进行upsert?
我有一个记录,我想在数据库中存在该记录,如果它不存在,并且已经存在(存在主键),我希望将字段更新为当前状态。这通常被称为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(): …

1
MongoKit与MongoEngine与Flask-MongoAlchemy for Flask [关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 任何人都有使用MongoKit,MongoEngine或Flask-MongoAlchemy for Flask的经验吗? 你更倾向哪个?积极或消极的经历?Flask-Newbie的选择太多。

2
SQLAlchemy-for循环中query和query.all之间的区别
我想问一下两者之间有什么区别 for row in session.Query(Model1): pass 和 for row in session.Query(Model1).all(): pass 是第一个以某种方式用单个查询轰炸数据库的迭代器,而后一个“急切”迭代器以列表的形式查询整个对象(例如range(x)vs xrange(x))?
74 sqlalchemy 

4
flake8抱怨filter子句中的布尔比较“ ==”
我在mysql db表中有一个布尔字段。 # table model class TestCase(Base): __tablename__ = 'test_cases' ... obsoleted = Column('obsoleted', Boolean) 要获得所有未过时的测试用例的计数,可以像这样简单地完成: caseNum = session.query(TestCase).filter(TestCase.obsoleted == False).count() print(caseNum) 效果很好,但是flake8报告以下警告: E712:与False的比较应为“如果cond为False:”或“如果非cond:” 好吧,我认为这是有道理的。因此,将我的代码更改为此: caseNum = session.query(TestCase).filter(TestCase.obsoleted is False).count() 要么 caseNum = session.query(TestCase).filter(not TestCase.obsoleted).count() 但是它们都不起作用。结果始终为0。我认为filter子句不支持运算符“ is”或“ is not”。有人可以告诉我如何处理这种情况。我不想禁用薄片。

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.