📜  SQLAlchemy核心-执行表达式

📅  最后修改于: 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打开数据库来验证结果,如以下屏幕截图所示-

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'},
])

这反映在表的数据视图中,如下图所示:

表数据视图