使用SQLAlchemy向数据库中插入数据非常简单。
address.name = 'Joe'
address.age = 26
session.add(address)
但实际上我有三张表 - 我怎样指定我要插入数据的表呢?
address.name = 'Joe'
address.age = 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,但在我的情况下,这更方便。
session.execute(table_addresses.insert().values(name='Joe', age=20))
代替。 - Derek 朕會功夫engine.execute
能起作用吗? - Ciasto piekarz你可能会想要查看SQLAlchemy ORM教程。
不过,为了让你开始工作,我猜想你需要设置类似以下的内容。
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)
session.commit() # This will do the actual database insertion
虽然你可能可以试着实时操作,但这很可能不会让你的生活更加轻松,因为你仍需要告诉它哪些对象与整数、字符串等相关联,以映射到数据库表中。
__tablename__ ='addresses'
来指定表名为addresses
。但如果您要处理几个具有不同名称的相同表格,该怎么办呢? - Jamie Starke__tablename__
将用于告诉它要匹配到数据库中的实际表格。例如,基于您的contacts
示例,您可能会将class
行替换为class Contact(Base):
,并将__tablename__
行替换为__tablename__ = 'contacts'
。您是否正在尝试动态地将它们分别插入不同的表格? - Jamie Starke