繁体   English   中英

在 SQLAlchemy/encode/databases 中使用 SQL function 的原始查询

[英]Raw Query with SQL function in SQLAlchemy/encode/databases

我是 Python 和 FastAPI 的初学者。 我正在使用 FastAPI 并且我有一个表,其中要求使用PostgreSQLpgcrypto模块加密用户的个人信息。 原始查询将是这样的,可以在任何数据库客户端中执行,并且执行时不会出现任何错误

insert into customers (email, gender) values (pgm_sym_encrypt('hello@gmail.com', 'some_secret_key'), 'male')

如何使用 SQLAlchemy 核心或编码/数据库执行此查询? 我试过这个

from sqlalchemy import func
query = f"""
    insert into customers (email, gender) values 
    (:email, :gender)
    """
await database.execute(query=query, values={'email': func.pgm_sys_encrypt('hello@gmail.com', 'secret_key'), 'gender': 'male'})

它没有用。 我也试过

query = f"""
    insert into customers (email, gender) values 
    (pgm_sys_encrypt('hello@gmail.com', 'secret_key'), :gender)
    """
await database.execute(query=query, values={'gender': 'male'})

这也不起作用。 我不知道如何在原始查询中执行 function 。 请帮忙。 我已经尝试了很多,但我现在对这个完全一无所知。 预先感谢您的帮助。

由于它是一个原始查询,您应该能够像在原始 SQL 中那样指定它,所以这应该有效:

from sqlalchemy.sql import text
query = """
    insert into customers (email, gender) values 
    (pgm_sys_encrypt(:email, :secret_key), :gender)
    """
await database.execute(query=text(query), values={'email': 'hello@gmail.com', 'secret_key': 's3cr37', 'gender': 'male'})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM