我已经在数据库中设置了一个表,在该表中针对其输入和值元组设置了输出值,例如,我的输入使用字符串“ Calculation_score”评分,并且在数据库中,针对此字符串设置了值就是“ 10”。
**Table :**
**input** **value** **output value**
scoring Calculation_score 10
scoring Credit_score 20
scoring Monthly_score 30
scoring weekly_score 5
我的代码:
import psycopg2
value = "Calculation_score"
input = "scoring"
con = psycopg2.connect(database="myDB", user="postgres", password="admin", host="localhost", port="5432")
cur = con.cursor()
result = cur.execute("""SELECT input, input_type, value, output FROM value_rules WHERE input = :input
AND value = :value""", {"input": input, "value": value}).fetchone()
print(result)
return result['output']
我正在从python查询数据库以获取我的输出值,即使我使用“ ==”代替“:”,我也不明白该查询出了什么问题,这给了我错误(在下面)。 / p>
Traceback (most recent call last):
""", {"input": input, "value": value}).fetchone()
psycopg2.ProgrammingError: syntax error at or near ":"
LINE 4: WHERE input = :input
^
答案 0 :(得分:1)
尝试一下
import psycopg2
value = "Calculation_score"
input = "monthly_inquiries"
con = psycopg2.connect(database="myDB", user="postgres", password="admin", host="localhost", port="5432")
cur = con.cursor()
cur.execute("SELECT input, input_type, value, output FROM value_rules WHERE input = %s
AND value = %s;", (input, value))
result = cur.fetchone()
print(result)
实际上,execute不会获取行,我们必须使用游标(cur)来获取
答案 1 :(得分:1)
您可以更具体地设置查询语句,并使用参数化查询添加预期的格式字符s
,如下所示
>>> # example
>>> q = 'SELECT id, name FROM customer WHERE id = %(cid)s;'
>>> cursor.execute(q, {'cid': 1})
>>> cursor.query
b'SELECT id, name FROM customer WHERE id = 1;'
>>> # so in your case you can do
>>> q = 'SELECT input, input_type, value, output FROM value_rules WHERE input = %(input)s AND value = %(value)s'
>>> cursor.execute(q, {'input': 'Calculation_score', 'value': 'scoring' })
上查看更多