📅  最后修改于: 2023-12-03 15:35:06.857000             🧑  作者: Mango
SQLAlchemy是一个开源的Python SQL工具包和对象关系映射(ORM)框架,它可帮助Python程序员在SQL上操作关系型数据库。SQLAlchemy Core是SQLAlchemy的核心模块,提供了SQLAlchemy的基本数据库交互功能,ORM则是基于SQLAlchemy Core实现的。
执行表达式是SQLAlchemy Core的重要功能之一,它用于执行SQL语句及表达式。SQLAlchemy Core支持动态构建SQL语句及执行,拓展了SQLAlchemy的灵活性。
SQLAlchemy Core支持执行SQL语句的方法非常简单,主要包括以下几种方法:
使用execute方法可以执行任何标准的SQL语句。
from sqlalchemy import create_engine
engine = create_engine('postgresql://user:password@host:port/database')
with engine.connect() as conn:
result = conn.execute('SELECT * FROM mytable')
for row in result:
print(row)
SQLAlchemy也提供了text方法来执行SQL语句。text方法将字符串SQL语句提供给SQLAlchemy Core以执行。
from sqlalchemy import create_engine, text
engine = create_engine('postgresql://user:password@host:port/database')
with engine.connect() as conn:
result = conn.execute(text('SELECT * FROM mytable'))
for row in result:
print(row)
raw_connection方法可以直接获取底层数据库连接。该方法返回一个DB-API连接对象,该对象具有执行SQL语句的方法。
from sqlalchemy import create_engine
engine = create_engine('postgresql://user:password@host:port/database')
with engine.raw_connection() as conn:
cursor = conn.cursor()
cursor.execute('SELECT * FROM mytable')
result = cursor.fetchall()
for row in result:
print(row)
除了执行SQL语句,SQLAlchemy Core还支持执行常用的表达式,例如SELECT表达式和INSERT表达式。
使用select方法构建SELECT表达式。
from sqlalchemy import create_engine, select
engine = create_engine('postgresql://user:password@host:port/database')
with engine.connect() as conn:
stmt = select(['*']).select_from('mytable')
result = conn.execute(stmt)
for row in result:
print(row)
使用insert方法构建INSERT表达式。
from sqlalchemy import create_engine, insert
engine = create_engine('postgresql://user:password@host:port/database')
with engine.connect() as conn:
stmt = insert('mytable').values(name='John', age=30)
conn.execute(stmt)
由于SQL注入是一个广泛存在的安全威胁,因此需要在执行表达式时防范SQL注入。SQLAlchemy Core提供了绑定参数的方法bindParam和bindparams来规避SQL注入。
from sqlalchemy import create_engine, select
engine = create_engine('postgresql://user:password@host:port/database')
with engine.connect() as conn:
stmt = select(['*']).select_from('mytable').where('name=:name')
result = conn.execute(stmt, {'name': 'John'})
for row in result:
print(row)
SQLAlchemy Core提供了强大的执行表达式的功能,支持执行任何标准SQL语句和常用的表达式。同时,SQLAlchemy Core也提供了防范SQL注入的方法,确保应用程序的安全性。