【问题标题】:Cannot insert records that contain %无法插入包含 % 的记录
【发布时间】:2021-01-31 14:14:20
【问题描述】:

我继承了一些使用 SQLAlchemy 写入 Postgres 数据库的 Python 代码

代码的重要部分是:

from sqlalchemy import *

connection_string = "postgres://user,pasword,server&port/db"

然后有一个通用函数可以做到这一点:

    db = create_engine(connection_string)
    cmd = "INSERT INTO TABLE_NAME (a_id,b_id,c) values (" + str(a_id) + ", " + str(b_is) + ", '" + (c_field_value) + "');"
    result = db.execute(cmd)

可能不是最好的,但它可以工作,除非 c_field_value 包含 % 字符

我发现了这一点,因为 INSERT 在没有 % 的情况下完美运行,但是当你有 % 时它会崩溃

我也在函数调用之前添加了这个

    c_field_value = re.sub('\%', ' PCT', c_field_value)

并且 INSERT 工作正常,如果我将记录手动 (CLI) 插入 Postgres 也可以。

所以如果没有大规模的重构,我该如何让现有代码正确插入 % 呢?

【问题讨论】:

标签: python-3.x sqlalchemy


【解决方案1】:

我在execute()之前添加了这一行

cmd = text(cmd)

现在可以完美运行了。感谢您的帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-04
    • 2020-01-19
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 2016-08-11
    • 1970-01-01
    相关资源
    最近更新 更多