使用变量来搜索使用sql

时间:2016-12-13 19:43:02

标签: python database python-3.x sqlite

我正在制作一个python程序,你可以使用sqlite输入,编辑和删除数据。我知道这可能是一个基本问题,但是当我尝试使用我的变量编辑数据时,会出现错误,提示更改名称不是列。任何想法

def userchange():
    search = input("please enter a name to search for")
    changename = input("please enter name to change it to")
    sql = """UPDATE users SET FirstName = (changename) WHERE FirstName = (search)"""
    cursor.execute(sql)
    conn.commit()

2 个答案:

答案 0 :(得分:1)

感谢最终的帮助,我发现这种方法效果最好

import Control.Monad

instance Applicative SomeMonad where
    pure = return
    (<*>) = ap

instance Functor SomeMonad where
    fmap = liftM

答案 1 :(得分:0)

execute方法应该接受要替换到查询中的参数。 https://www.python.org/dev/peps/pep-0249/#id15

例如,如果您使用的是pyscopg2,那就像

def userchange():
    search = input("please enter a name to search for")
    changename = input("please enter name to change it to")
    sql = """UPDATE users SET FirstName = %s WHERE FirstName = %s"""
    cursor.execute(sql, (search, changeme))
    conn.commit()

http://initd.org/psycopg/docs/usage.html#passing-parameters-to-sql-queries

  

警告永远不要,永远不要使用Python字符串连接(+)或字符串参数插值(%)将变量传递给SQL查询字符串。甚至在枪口下也没有。 - pyscopg2 docs