我有8种数据,我想使用python通过mysql-connector插入到mysql表中.
我看过一些文档,说使用mysql-connector时最好使用int,string或tuple.
我试图将某些数据类型调整为字符串或元组,但是IDE一直显示错误.
如果有人,请帮助我弄清楚我将使用哪种数据类型.
数据结构设置如下(如果有什么更好的更改,请告诉我):
+----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| URL | varchar(1023) | YES | | NULL | |
| Title | varchar(1023) | YES | | NULL | |
| Content | varchar(1023) | YES | | NULL | |
| Month | varchar(1023) | YES | | NULL | |
| Date | varchar(1023) | YES | | NULL | |
| Year | varchar(1023) | YES | | NULL | |
| Time | varchar(1023) | YES | | NULL | |
| TimeZone | varchar(1023) | YES | | NULL | |
+----------+---------------+------+-----+---------+-------+
我的代码如下:
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 [],Title [],Content [] … TimeZone []是数据列表,它们的范围是相同的.
> URL:URL.
我用元组设置它很好(可以成功存储)
>标题:论文标题(即句子)
我试图用(Title [i],)或使用StringIO.String(Title [i])将其设置为元组,但是错误是
MySQLConverter' object has no attribute '_tuple_to_mysql
AttributeError: 'module' object has no attribute 'String'
分别.
>内容:几句话.
面临与上述相同的问题
>月,日期,年,时间,时区:
还没有尝试过,但是我想我可以用元组类型导入这些数据吗?
我查看了*并尝试了几种数据类型,但在这里仍然无法解决.有人可以让我知道如何处理这些数据?
解决方法:
您正在将每个单独的参数包装在一个元组中;不要那样做
也就是说,改为执行以下操作:
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,但仍将“全部”换行,例如一个元组中的单个参数.