Python MySQLConverter';对象没有属性'_元组到mysql';mysql连接器异常
我有8种数据,我想使用python通过mysql连接器插入到mysql表中。 我看过一些文档,它们说在使用mysql连接器时最好使用int、string或tuple。 我试图将一些数据类型调整为字符串或元组,但IDE一直显示错误。。。。 如果有人请帮助我澄清我将使用哪种数据类型 数据结构设置如下(如果有更好的更改,请告知我):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
我的代码如下:
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]}