SQLAlchemy ORM __init__ 方法与

2023-12-22

In the SQLAlchemy ORM 教程 http://docs.sqlalchemy.org/en/latest/orm/tutorial.html以下代码作为将映射到表的类的示例:

>>> from sqlalchemy import Column, Integer, String
>>> class User(Base):
...     __tablename__ = 'users'
...
...     id = Column(Integer, primary_key=True)
...     name = Column(String)
...     fullname = Column(String)
...     password = Column(String)
...
...     def __init__(self, name, fullname, password):
...         self.name = name
...         self.fullname = fullname
...         self.password = password
...
...     def __repr__(self):
...        return "<User('%s','%s', '%s')>" % (self.name, self.fullname, self.password)

If name, fullname and password由用户在__init__实例化类时的方法,将它们声明为有什么意义Column对象(即作为类变量)?我不明白 SQLAlchemy 如何以及何时能够使用这些信息 - 它是否以某种方式通过“Base”类传递给 SQLAlchemy 模块User是继承自? (我认为不可能以这种方式将信息传递给单元 - 通过声明一个从另一个类继承的类)。


首先,你应该明白

class Foo(object):
    bar = ['baz']

and

class Foo(object):
    def __init__(self):   
        self.bar = ['baz']

意味着非常不同的事情,在第一种情况下,bar是一个类属性,它对于所有实例都是相同的Foo,以及班级Foo本身(这是一个实例type, not Foo),但在第二个中,bar是每个实例的一个属性Foo,并且与该类根本没有关联!如果您尝试两者,并附加到bar,首先,更改将传播到每个实例Foo,但对于第二个,只有您附加到的实例才会发生该更改。

你甚至可以同时设置!,你可以这样做:

class Foo(object):
    bar = 'baz'

    def __init__(self):   
        self.bar = 'quux'

这是完全明确的。Foo.bar == 'baz', Foo().bar == 'quux',您可以使用以下命令从实例返回类属性type(Foo()).bar == 'baz'

所以这意味着中的论点__init__在本教程中,应用于实例User,但是Column定义适用于该类

Sqlalchemy 使用class主要是信息。它使用它来生成 SQL,以正确的方式读取和写入数据库。这些定义仅真正适用于 sqlalchemy 转换实例的情况User数据库调用,或尝试创建实例User当它从数据库接收行时。

您应该将类​​属性视为声明类型,实例属性为设置值.

至于问题when实际上是sqlalchemyuses这些信息有一种特殊的魔力Base,这几乎可以肯定来自sqlalchemy.ext.declarative.declarative_base()。该函数返回一个class,并且该类使用元类它可以跟踪何时派生出新类Base被定义。在类定义的末尾,甚至在创建实例之前User, sqlalchemy 着眼于User类来查找它需要了解的列属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQLAlchemy ORM __init__ 方法与 的相关文章

  • 如何替换 Pandas Dataframe 中不在列表中的所有值? [复制]

    这个问题在这里已经有答案了 我有一个值列表 如何替换 Dataframe 列中不在给定值列表中的所有值 例如 gt gt gt df pd DataFrame D ND D garbage columns S gt gt gt df S 0
  • 使用 MongoDB 作为我们的主数据库,我应该使用单独的图数据库来实现实体之间的关系吗?

    我们目前正在为一家专业公司内部实施类似 CRM 的解决方案 由于存储信息的性质以及信息的不同值和键 我们决定使用文档存储数据库 因为它完全适合目的 在本例中我们选择 MongoDB 作为此 CRM 解决方案的一部分 我们希望存储实体之间的关
  • 类的 IPython 表示

    我正在使用我创建的模块尝试 IPython 但它没有显示类对象的实际表示 相反 它显示类似的内容 TheClass module TheClass name I heavily在这个模块中使用元类 我有真正有意义的类表示 应该向用户显示 是
  • Gunicorn 工作人员无论如何都会超时

    我正在尝试通过gunicorn运行一个简单的烧瓶应用程序 但是无论我做什么 我的工作人员都会超时 无论是否有针对应用程序的活动 工作人员在我设置任何内容后总是会超时timeout值到 是什么导致它们超时 当我发出请求时 请求成功通过 但工作
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • 使用主题交换运行多个 Celery 任务

    我正在用 Celery 替换一些自制代码 但很难复制当前的行为 我期望的行为如下 创建新用户时 应向tasks与交换user created路由键 该消息应该触发两个 Celery 任务 即send user activate email
  • python multiprocessing 设置生成进程等待

    是否可以生成一些进程并将生成进程设置为等待生成的进程完成 下面是我用过的一个例子 import multiprocessing import time import sys def daemon p multiprocessing curr
  • 如何使用 Selenium 和 ChromeDriver 解决 TypeError: 'module' object is not callable 错误 [重复]

    这个问题在这里已经有答案了 代码试验 from selenium import webdriver from selenium webdriver chrome options import Options as Chromeoptions
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal
  • Python 3:将字符串转换为变量[重复]

    这个问题在这里已经有答案了 我正在从 txt 文件读取文本 并且需要使用我读取的数据之一作为类实例的变量 class Sports def init self players 0 location name self players pla
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 无法导入 langchain.agents.load_tools

    我正在尝试使用 LangChain Agents 但无法导入 load tools 版本 langchain 0 0 27 我尝试过这些 from langchain agents import initialize agent from
  • 嵌套作用域和 Lambda

    def funct x 4 action lambda n x n return action x funct print x 2 prints 16 我不太明白为什么2会自动分配给n n是返回的匿名函数的参数funct 完全等价的定义fu
  • 通过Python连接到Bigquery:ProjectId和DatasetId必须非空

    我编写了以下脚本来通过 SDK 将 Big Query 连接到 Python 如下所示 from google cloud import bigquery client bigquery Client project My First Pr
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • 在 Google App Engine 中,如何避免创建具有相同属性的重复实体?

    我正在尝试添加一个事务 以避免创建具有相同属性的两个实体 在我的应用程序中 每次看到新的 Google 用户登录时 我都会创建一个新的播放器 当新的 Google 用户在几毫秒内进行多个 json 调用时 我当前的实现偶尔会创建重复的播放器
  • 重新分配唯一值 - pandas DataFrame

    我在尝试着assign unique值在pandas df给特定的个人 For the df below Area and Place 会一起弥补unique不同的价值观jobs 这些值将分配给个人 总体目标是使用尽可能少的个人 诀窍在于这
  • pandas.read_csv 将列名移动一倍

    我正在使用位于的 ALL zip 文件here http www fec gov disclosurep PDownload do 我的目标是用它创建一个 pandas DataFrame 但是 如果我跑 data pd read csv
  • pytest找不到模块[重复]

    这个问题在这里已经有答案了 我正在关注pytest 良好实践 https docs pytest org en latest explanation goodpractices html test discovery或者至少我认为我是 但是

随机推荐

  • php字符串差异

    我想创建一个方法来比较两个句子并返回使它们不同的单词 e g 灰色瓷砖 100 X 200 厨房地板 灰色瓷砖 300 X 600 厨房地板 区别是 100 200 300 600 它将允许一个单词 不需要一个字符位于两个唯一的单词之间 但
  • 非交互式“git clean -fdx”

    我正在构建一个处理传入文件包的东西 但我有一个相当严重的问题 即我无法清理传入数据 直到它能够中断处理 并且它以简单地重新启动进程的方式中断它没有修复它 我目前最好的解决方案是git clean fdx and git checkout 该
  • 我应该使用哪个版本的 MSXML?

    似乎这是一个常见问题 尽管我在 SO 上找不到它 我应该在我的应用程序中使用哪个版本的 MSXML 更重要的是 我应该如何决定 有 MSXML3 4 5 和 6 我最近发布了一些代码通过 vb 脚本调用 wcf 服务 https stack
  • Spring Security 身份验证入口点

    我已通过设置在 Spring MVC 应用程序上启用了 Rest 支持AuthenticationEntryPoint在我的 security context xml 上
  • 在 Backbone.js 中处理视图和模型对象

    在不需要时处置模型 视图实例的最有效方法是什么 通常 我将所有逻辑放在控制器 路由器中 它决定应该创建什么视图以及应该向它们提供什么模型 通常 有一些处理程序函数 对应于不同的用户操作或路由 每次执行处理程序时我都会创建新的视图实例 当然
  • dplyr 中波浪号和点符号的含义

    Summary我正在读一本article https dplyr tidyverse org articles colwise html关于 dplyr 的跨函数的主题 看第一个使用示例 我看到了以前从未见过的运算符的使用 我不知道它们是否
  • VisNetwork 与 Shiny 的点击事件

    我已经使用 Shiny 中的 visNetwork 包构建了我的网络 我想单击一个节点 然后显示数据框中有关该节点的信息 我已经能够使用单击和近点函数对散点图执行此操作 例如此处显示的 Shiny 示例中的函数 http shiny rst
  • 我可以在 C 程序中使用 cstdio 吗?

    当我添加时 我在 cstdio 中收到大量错误 include
  • 订购 ObservableCollection 而不创建新的 [重复]

    这个问题在这里已经有答案了 我有以下代码来重新订购ObservableCollection
  • 如何合并嵌套字典?

    我有一个嵌套字典 python 3 9 列表 看起来像这样 records Total Owner Available 15 to 34 years 1242 Total Owner Available 35 to 64 years 569
  • Keras 中的指标是如何计算的?

    我想知道 Keras 如何计算一个指标 是否是自定义指标 例如 假设我有以下指标 它产生预测与真实情况之间的最大误差 def max error y true y pred import keras backend as K return
  • 多个 uniqid() 调用不唯一

    我有一个有趣的例子 其中多次重复调用uniqid 当本地托管在 XAMPP 上时 不会生成唯一的编号 这个唯一的 ID 会重复 5 到 20 次 然后就会神秘地发生变化 然而 作为一个有趣的转折 该代码可以工作完美在我们的生产服务器上 这就
  • Chrome 扩展如何基本上 cURL 其他页面? [复制]

    这个问题在这里已经有答案了 我正在考虑编写一个 Chrome 扩展程序 需要在某个网站的某个动态页面上抓取一些链接并分析链接页面的内容 实际上 我对编写浏览器扩展了解不多 所以在我致力于学习如何编写之前 我想看看它是否可行 我确实知道扩展通
  • Python 描述符中实例和所有者的用途是什么?

    我正在尝试理解 Python 中的描述符 我似乎无法理解描述符方法中的实例和所有者是什么 object get self instance owner 现在我已经阅读了文档 https docs python org 3 reference
  • 在 Ruby 中如何测试一个值是否为素数?有简单的方法和困难的方法吗?

    我正在尝试创建一个程序来测试某个值是否为素数 但我不知道如何进行 这是我的代码 class DetermineIfPrime def initialize nth value nth value nth value primetest en
  • 如何配置 Visual Studio 2013 以与 Git/SourceTree 一起使用

    我希望能够将 Git 与 Visual Studio 2013 一起使用 我也希望能够使用 SourceTree 但我不知道两者如何一起使用 我在 Visual Studio 中创建了一个项目 并将其配置为使用 Git 但我不知道存储库是在
  • javascript 中的范围表现得很奇怪

    对象通过 JavaScript 中的引用传递 意味着该对象从任何地方发生的变化都应该得到反映 在本例中 console log a 的预期输出为 function change a b a x added a b assigning a a
  • 基于管道分隔列创建新的 pandas 列并可能重复

    这个问题与我之前的问题的良好解决方案有关 基于 Pandas 中的管道分隔列创建多个新列 https stackoverflow com questions 48010030 create multiple new columns base
  • 如何(轻松)删除 Xcode 6 中 Interface Builder 中的约束

    假设您已选择一个对象 并且 实用程序 面板中的 大小选择器 已打开 您可以看到应用于对象的约束列表 在约束列表中 您可以单击小齿轮并选择删除 在 Xcode 6 中不能 IB中删除约束还有几种方法 在文档大纲中找到约束并以这种方式将其删除
  • SQLAlchemy ORM __init__ 方法与

    In the SQLAlchemy ORM 教程 http docs sqlalchemy org en latest orm tutorial html以下代码作为将映射到表的类的示例 gt gt gt from sqlalchemy i