Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 将数据插入特定表(sqlalchemy)_Python 2.7_Sqlalchemy - Fatal编程技术网

Python 2.7 将数据插入特定表(sqlalchemy)

Python 2.7 将数据插入特定表(sqlalchemy),python-2.7,sqlalchemy,Python 2.7,Sqlalchemy,使用sqlalchemy将数据插入数据库非常容易 address.name = 'Joe' address.age = 26 session.add(address) 但实际上我有三个表-如何指定要在其中插入数据的表?您可能会想查看 不过,为了让您开始,我怀疑您会希望设置以下内容 from sqlalchemy import Column, Integer, String class Address(Base): __tablename__ = 'addresses' id

使用sqlalchemy将数据插入数据库非常容易

address.name = 'Joe'
address.age = 26
session.add(address)

但实际上我有三个表-如何指定要在其中插入数据的表?

您可能会想查看

不过,为了让您开始,我怀疑您会希望设置以下内容

from sqlalchemy import Column, Integer, String
class Address(Base):
    __tablename__ = 'addresses'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

    def __init__(self, name, age):
        self.name = name
        self.age = age
现在,由于您似乎已经知道如何获得会话,您可以这样做

address = Address('Joe', 26)
session.add(address)

虽然您可能只是尝试在运行时执行此操作,但这可能不会使您的生活更轻松,因为您仍然需要告诉它哪些对象与整数、字符串等相关,才能映射到数据库表。

我通过使用sql表达式语言添加新行来解决此问题:

engine.execute(table_addresses.insert(), name='Joe', age=20)
engine.execute(table_contacts.insert(), email='joe@something.com', cellnumber='267534320')

我通常使用ORM,但在我的情况下更方便。

这也是我向数据库添加数据的方式。假设数据库中有多个表,如何指定将数据添加到表“Contacts”而不是“addresses”?如上所述,您可以使用
\uuuu tablename\uuu='addresses'
指定表名
addresses
。相反,您是在处理几个名称不同的相同表吗?如果您有不同的表,我可能会建议您使用不同的类映射它们。
\uuuu tablename\uuuu
将用于告诉它要匹配的数据库中的实际表。例如,基于您的
联系人
示例,您可能会将
行替换为
类联系人(基本):
并将
表名
行替换为
表名
。您是否正在尝试动态地将它们激发到不同的表中?是的,我想动态地将它们添加到不同的表中。当我尝试添加数据时,我不在映射类中。您是指三个类似的表?如果您使用的是会话,请执行
session.execute(table_addresses.insert().values(name='Joe',age=20))
相反。这比使用会话更可取吗?如果表是最近动态创建的,将
引擎。执行
工作?