📅  最后修改于: 2020-11-27 07:34:10             🧑  作者: Mango
在上一章中,我们学习了SQL表达式。在本章中,我们将研究这些表达式的执行。
为了执行生成的SQL表达式,我们必须获得一个表示活动签出的DBAPI连接资源的连接对象,然后按以下代码所示提供该表达式对象。
conn = engine.connect()
以下insert()对象可用于execute()方法-
ins = students.insert().values(name = 'Ravi', lastname = 'Kapoor')
result = conn.execute(ins)
控制台显示执行SQL表达式的结果,如下所示-
INSERT INTO students (name, lastname) VALUES (?, ?)
('Ravi', 'Kapoor')
COMMIT
以下是显示使用SQLAlchemy的核心技术执行INSERT查询的完整代码段-
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
engine = create_engine('sqlite:///college.db', echo = True)
meta = MetaData()
students = Table(
'students', meta,
Column('id', Integer, primary_key = True),
Column('name', String),
Column('lastname', String),
)
ins = students.insert()
ins = students.insert().values(name = 'Ravi', lastname = 'Kapoor')
conn = engine.connect()
result = conn.execute(ins)
可以通过使用SQLite Studio打开数据库来验证结果,如以下屏幕截图所示-
结果变量称为ResultProxy对象。它类似于DBAPI游标对象。我们可以获取有关使用ResultProxy.inserted_primary_key从语句生成的主键值的信息,如下所示-
result.inserted_primary_key
[1]
要使用DBAPI的execute many()方法发出许多插入,我们可以发送字典列表,每个字典包含一组要插入的不同参数。
conn.execute(students.insert(), [
{'name':'Rajiv', 'lastname' : 'Khanna'},
{'name':'Komal','lastname' : 'Bhandari'},
{'name':'Abdul','lastname' : 'Sattar'},
{'name':'Priya','lastname' : 'Rajhans'},
])
这反映在表的数据视图中,如下图所示: