Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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 MySQLConverter';对象没有属性'_元组到mysql';mysql连接器异常_Python_Mysql_Types_Mysql Connector Python - Fatal编程技术网

Python MySQLConverter';对象没有属性'_元组到mysql';mysql连接器异常

Python MySQLConverter';对象没有属性'_元组到mysql';mysql连接器异常,python,mysql,types,mysql-connector-python,Python,Mysql,Types,Mysql Connector Python,我有8种数据,我想使用python通过mysql连接器插入到mysql表中。 我看过一些文档,它们说在使用mysql连接器时最好使用int、string或tuple。 我试图将一些数据类型调整为字符串或元组,但IDE一直显示错误。。。。 如果有人请帮助我澄清我将使用哪种数据类型 数据结构设置如下(如果有更好的更改,请告知我): 我的代码如下: for i in range(len(URL)): dbcur.execute( """INSERT INTO scriptin

我有8种数据,我想使用python通过mysql连接器插入到mysql表中。 我看过一些文档,它们说在使用mysql连接器时最好使用int、string或tuple。 我试图将一些数据类型调整为字符串或元组,但IDE一直显示错误。。。。 如果有人请帮助我澄清我将使用哪种数据类型

数据结构设置如下(如果有更好的更改,请告知我):


我的代码如下:

for i in range(len(URL)):
    dbcur.execute(
        """INSERT INTO scripting (URL, Title, Content, Month, Date, Year, Time, TimeZone)
           VALUES ("%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s")""",
           ((URL[i],), (Title[i],), (Content[i],), (Month[i],), (Date[i],), (Year[i],), 
           (Time1[i],), (TimeZone[i],)))
    dbcon.commit()
ps-URL[],标题[],内容[]。。。时区[]是数据列表,其范围相同

  • URL:URL。 我用tuple设置了这个,它很好。(可以成功存储)

  • 标题:一篇文章的标题。(例如一个句子) 我尝试将其设置为带有
    (Title[I],)
    的元组或带有
    StringIO.string(Title[I])
    的字符串,但错误是

    MySQLConverter' object has no attribute '_tuple_to_mysql  
    AttributeError: 'module' object has no attribute 'String'
    
    分开

  • 内容:几句话。 面临与上述相同的问题

  • 月份、日期、年份、时间、时区: 我还没有尝试过,但我想我可以用元组类型导入这些数据吗


我已经查看了stackoverflow并尝试了几种数据类型,但在这里仍然不起作用。我如何处理这些数据?有人能告诉我吗?

您正在将每个参数包装在一个
元组中
;不要那样做。 也就是说,改为这样做:

dbcur.execute(
     """INSERT INTO scripting (URL, Title, Content, Month, Date, Year, Time, TimeZone) 
     VALUES ("%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s")""",
     (URL[i], Title[i], Content[i], Month[i], Date[i], Year[i], Time1[i], TimeZone[i]))
您只需要将所有替换值包装在一个元组中,没有例外。

我可以理解为什么您会感到困惑(“URL:URL。我用tuple设置了它,这很好。”):对于DBAPI,在下面的示例中,单个值也需要包装在1-tuple中),但这仍然是适用于这里的相同规则:

 dbcur.execute('INSERT INTO scripting (URL) VALUES (%s)', (URL,))

现在我们只替换
URL
,但我们仍然将“all”(例如,单个参数)封装在一个元组中

Antti Haapala有一个很好的答案,但是您也可以通过使用
zip
构建要插入的行来整理它

for row in zip(URL, Title, Content, Month, Date, Year, Time1, TimeZone):
    dbcur.execute(
        """INSERT INTO scripting (URL, Title, Content, Month, Date, Year, Time, TimeZone)
           VALUES ("%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s")""",
           row)
    dbcon.commit()

这里我有一个解决方案给你

我们只考虑三列作为例子。 URL、标题和内容。 正如您所提到的,URL和其他URL是数据列表

URL=['url1','url2','url3']
TITLE=['title1','title2','title3']
等等。 在数据库表中有相同的列

cursor_object.execute(query,params)
让我们在此处编写一个查询:

query='''
INSERT INTO scripting(URL, TITLE, CONTENT)
VALUES (%s,%s,%s)'''
并执行sql命令:

cursor_object.execute(query%(URL[i],TITLE[i],CONTENT[i]))
当它被翻译时,以下将是第一次迭代的结果

'插入脚本(url,标题)值(url1,标题1)' 在实际转换为mysql查询时,url1不是此处的字符串。所以你必须改变一点

query='''
INSERT INTO scripting(URL, TITLE, CONTENT)
VALUES ("%s","%s","%s")'''

或者,您可以使用字典方法

query=''' *query statement* values
(%(url)s,%(title)s,%(content)s)
dictionary={'url':'url1','title':'title1','content':'content1'}
cursor_object.execute(query,dictionary)
对于多行:

for i in range len(URL):
    cursor_object.execute(query,{'url':URL[i],'title':TITLE[i],'content':CONTENT[i]}
最简单的解决方案由@Antti Haapala给出。 希望你喜欢

for i in range len(URL):
    cursor_object.execute(query,{'url':URL[i],'title':TITLE[i],'content':CONTENT[i]}