Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 编程错误:(1064,…)用于正确的语法以使用near';)';在第1行“)_Python_Mysql_Aws Lambda_Amazon Rds - Fatal编程技术网

Python 编程错误:(1064,…)用于正确的语法以使用near';)';在第1行“)

Python 编程错误:(1064,…)用于正确的语法以使用near';)';在第1行“),python,mysql,aws-lambda,amazon-rds,Python,Mysql,Aws Lambda,Amazon Rds,我正在尝试使用AWS lambda查询RDS实例。我正在用python编写代码 我的插入查询是: with conn.cursor() as cur: cur.execute("""insert into DocumentLanguagesInfo (documentId, version, language1, language1Confidence, language2, language2Confidence, language3, language3Confidence, ot

我正在尝试使用AWS lambda查询RDS实例。我正在用python编写代码

我的插入查询是:

with conn.cursor() as cur:
 cur.execute("""insert into DocumentLanguagesInfo (documentId, version, language1, 
 language1Confidence, language2, language2Confidence, language3, language3Confidence, 
 otherLanguages) values(%s, %s, %s, %s, %s, %s, %s, %s, %s)""", (docId, version, lang1, 
 lang1Conf, lang2, lang2Conf, lang3, lang3Conf, otherLangs))
其中conn是成功建立的SQL server连接的变量

但是当我执行这个查询时,我在cloudwatch中得到一个错误:

[ERROR] ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))' at line 1")
Traceback (most recent call last):
  File "/var/task/sqlConnection.py", line 100, in lambda_handler
    cur.execute("""insert into DocumentLanguagesInfo (documentId, version, language1, language1Confidence, language2, language2Confidence, language3, language3Confidence, otherLanguages) values(%s, %s, %s, %s, %s, %s, %s, %s, %s)""", (docId, version, lang1, lang1Conf, lang2, lang2Conf, lang3, lang3Conf, otherLangs))
我尝试用这种方式编写代码,但仍然会出现相同的错误:

with conn.cursor() as cur:
        sql_query = "insert into DocumentLanguagesInfo (documentId, version, language1, language1Confidence, language2, language2Confidence, language3, language3Confidence, otherLanguages) values(%s, %s, %s, %s, %s, %s, %s, %s, %s)"
        recordTuple = (docId, version, lang1, lang1Conf, lang2, lang2Conf, lang3, lang3Conf, otherLangs)

        cur.execute(sql_query, recordTuple)
        conn.commit()

我在这个查询中做错了什么?

我认为问题可能出在
其他语言的列表中。也许用

recordTuple = (docId, version, lang1, lang1Conf, lang2, lang2Conf, lang3, lang3Conf, tuple(otherLangs)) 

会更好。

我认为问题可能在
其他语言中。也许用

recordTuple = (docId, version, lang1, lang1Conf, lang2, lang2Conf, lang3, lang3Conf, tuple(otherLangs)) 

将工作得更好。

每当您发现自己使用枚举列名时(比如上面的2),您都可以合理地确信您的模式设计有缺陷;数据库表不是电子表格。是否确实正确复制了它?该错误提到了
,但这不会出现在查询中。它出现的唯一位置是在调用的末尾,在
其他语言之后,但那是Python代码,而不是SQL。如果结尾
“”,则可能会出现该错误“
otherLangs]之后”)
@Barmar,代码被正确复制,语法看起来不错,但仍然不知道为什么会出现这个错误。@Barmar,我编辑了这个问题,并尝试了另一种实现它的方法,仍然不起作用。任何时候你发现自己有枚举列名(比如上面的2个列名)你可以有理由相信你的模式设计是有缺陷的;数据库表不是电子表格。是否确实正确复制了它?该错误提到了
,但这不会出现在查询中。它出现的唯一位置是在调用的末尾,在
其他语言之后,但那是Python代码,而不是SQL。如果结尾
“”,则可能会出现该错误“
otherLangs]之后”)
@Barmar,代码复制正确,语法看起来不错,但仍然不知道为什么会出现此错误。@Barmar,我编辑了问题并尝试了另一种实现方法,但仍然不起作用。我认为您不能在
游标中嵌套元组。execute()
parameters。我认为不能在
cursor.execute()中嵌套元组。
parameters。