📜  SQLAlchemy Core – 执行表达式(1)

📅  最后修改于: 2023-12-03 15:35:06.857000             🧑  作者: Mango

SQLAlchemy Core - 执行表达式

概念简介

SQLAlchemy是一个开源的Python SQL工具包和对象关系映射(ORM)框架,它可帮助Python程序员在SQL上操作关系型数据库。SQLAlchemy Core是SQLAlchemy的核心模块,提供了SQLAlchemy的基本数据库交互功能,ORM则是基于SQLAlchemy Core实现的。

执行表达式是SQLAlchemy Core的重要功能之一,它用于执行SQL语句及表达式。SQLAlchemy Core支持动态构建SQL语句及执行,拓展了SQLAlchemy的灵活性。

执行语句的方法

SQLAlchemy Core支持执行SQL语句的方法非常简单,主要包括以下几种方法:

execute方法

使用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)
text方法

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方法

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方法构建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方法构建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注入是一个广泛存在的安全威胁,因此需要在执行表达式时防范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注入的方法,确保应用程序的安全性。