【问题标题】:How to use variable in an sql statement when the variables have special characters当变量有特殊字符时如何在sql语句中使用变量
【发布时间】:2020-11-19 13:21:37
【问题描述】:

我试图在 for 循环中从几个不同的表中选择数据列,每个表名都以数字开头,标题为 0_training_market 到 155_training_market。 要在 sql 语句中使用以数字开头的表,我必须在该标题周围使用一对额外的引号,这只会将我的变量转换为字符串并且不会读取实际变量。这是我的代码和错误:

for j in list(range(156)):
    generation = str(j)+'_training_market'
    energy_source = db.query(" SELECT energy_source FROM " + generation + " WHERE id < 100 ORDER BY id ")
    quantity = db.query(" SELECT quantity FROM " + generation + " WHERE id < 100 ORDER BY id ")

sqlalchemy.exc.ProgrammingError: (psycopg2.errors.SyntaxError) syntax error at or near "0"
LINE 1:  SELECT energy_source FROM 0_training_market WHERE id < 100 ...
                                   ^

[SQL:  SELECT energy_source FROM 0_training_market WHERE id < 100 ORDER BY id ]

我不知道如何解决这个问题,因此感谢您提供任何帮助。谢谢

【问题讨论】:

    标签: sql database postgresql dataset


    【解决方案1】:

    PostgreSQL 需要在命名错误的对象周围加上双引号:

    for j in list(range(156)):
        generation = str(j)+'_training_market'
        energy_source = db.query(""" SELECT energy_source FROM "{}" WHERE id < 100 ORDER BY id """.format(generation))
        quantity = db.query(""" SELECT quantity FROM "{}" WHERE id < 100 ORDER BY id """.format(generation))
    
    

    【讨论】:

      猜你喜欢
      • 2016-10-25
      • 1970-01-01
      • 2011-11-07
      • 2018-04-04
      • 2019-04-27
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 2019-05-27
      相关资源
      最近更新 更多