1

您好,我正在关注Python MYSQL 更新语句并设法为我的程序的 SQL 更新生成此代码,其中包含变量函数:

def editInfo(start, userName):
    newFavGenre = input("Enter your favourite genre")
    newFavArtist = input("Enter your favourite artist")
    ## userName is a global variable
    con = lite.connect(db)
    cur = con.cursor()
    cur.execute ("""
    UPDATE users
    SET favGenre=%s, favArtist=%s
    WHERE username=%s
""", (newFavGenre, newFavArtist, userName))
    results = cur.fetchall()
    return result
    mainmenu()

并继续体验此错误代码:

sqlite3.OperationalError: near "%": syntax error

有什么想法我哪里出错了吗?

4

1 回答 1

2

您正在查看的帖子似乎是针对 MySQL 的,我推测您正在使用sqlite3基于您的错误的 python 接口。

查看sqlite3 文档...

cur.execute("""
    UPDATE users
    SET favGenre=%s, favArtist=%s
    WHERE username=%s
""", (newFavGenre, newFavArtist, userName))

应该改为

cur.execute("""
    UPDATE users
    SET favGenre=?, favArtist=?
    WHERE username=?
    """, (newFavGenre, newFavArtist, userName))

您也可以使用他们的命名样式,而不是使用一个元组,而是使用一个字典。

cur.execute("""
    UPDATE users
    SET favGenre=:genre, favArtist=:artist
    WHERE username=:username
""", {'genre':newFavGenre, 'artist': newFavArtist, 'username':userName})
于 2018-03-31T23:36:29.910 回答