无法为Python 3中的数据库操作传递变量?

时间:2016-08-10 08:00:03

标签: python-3.5 pymysql

我在main.py中有这个:

# Find negatif score of a word
analysis.sentiword_negscore("unable")
db_operations.connection_close()

在analysis.py中的这个:

# Find the sentiword point of a word
def sentiword_negscore(word):
    negscore = db_operations.find_negscore(word)
    print(word + "has negatif score of: " + negscore)

db_operations.py中的这个:

def find_negscore(word):
    with connection.cursor() as cursor:
        # Read a single record
        sql = "SELECT `neg_score` FROM `allwords` WHERE `synset_terms_en`=%s"
        cursor.execute(sql, (word))
        result = cursor.fetchone()
        return result

def connection_close():
    connection.close()

当我运行main.py时,我收到以下错误:

Traceback (most recent call last):
  File "main.py", line 35, in <module>
    analysis.sentiword_negscore("unable")
  File "/Users/efe/virtualenvs/virt1/bin/application/analysis.py", line 49, in sentiword_negscore
    negscore = db_operations.find_negscore(word)
  File "/Users/efe/virtualenvs/virt1/bin/application/db_operations.py", line 31, in find_negscore
    cursor.execute(sql, (word))
  File "/Users/efe/virtualenvs/virt1/lib/python3.5/site-packages/pymysql/cursors.py", line 167, in execute
    result = self._query(query)
  File "/Users/efe/virtualenvs/virt1/lib/python3.5/site-packages/pymysql/cursors.py", line 323, in _query
    conn.query(q)
  File "/Users/efe/virtualenvs/virt1/lib/python3.5/site-packages/pymysql/connections.py", line 835, in query
    self._execute_command(COMMAND.COM_QUERY, sql)
  File "/Users/efe/virtualenvs/virt1/lib/python3.5/site-packages/pymysql/connections.py", line 1034, in _execute_command
    raise err.InterfaceError("(0, '')")
pymysql.err.InterfaceError: (0, '')

这里有什么问题?谢谢。

1 个答案:

答案 0 :(得分:0)

必须是元组:

cursor.execute(sql, (word, )) # instead of cursor.execute(sql, (word))