Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.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中的insert语句到mysql中的错误是什么?_Python_Mysql_Sql_Sql Insert - Fatal编程技术网

在下面的示例中,python中的insert语句到mysql中的错误是什么?

在下面的示例中,python中的insert语句到mysql中的错误是什么?,python,mysql,sql,sql-insert,Python,Mysql,Sql,Sql Insert,我正在尝试对网站进行爬网,然后从该网站检索数据,并使用python 3将数据插入mysql表中,我想在表中插入的数据是tuble,我实现了get_article_details函数,它正确地生成了数据。但我在insert语句中遇到以下问题: import pymysql conn=pymysql.connect(host='localhost',port=3306,user='root',password='') cur=conn.cursor() def save_data(data):

我正在尝试对网站进行爬网,然后从该网站检索数据,并使用python 3将数据插入mysql表中,我想在表中插入的数据是tuble,我实现了
get_article_details
函数,它正确地生成了数据。但我在insert语句中遇到以下问题:

import pymysql
conn=pymysql.connect(host='localhost',port=3306,user='root',password='')
cur=conn.cursor()
def save_data(data):
    
    cur.execute("insert into shereen.articles values" +str(data))
    conn.commit()
    print(data[0]+"   -->>saved")

def get_article_details(url):
    r=requests.get(url)
    soup=BeautifulSoup(r.text)
    title=soup.title.text
    image=soup.find('div',attrs={"class":"articleimg"}).find('img')['src']
    writer=soup.find('div',attrs={"class":'pinfo'}).find('a').text
    article_date=soup.find('div',attrs={"class":'pinfo'}).find('span').text.replace("|"," ").strip()
    body=soup.find('div',attrs={'id':'NewsStory'})
    body.find('div',attrs={"class":'smsBoxContainer-v1'}).decompose()
    body.find('div',attrs={"class":'min_related'}).decompose()
    body.find('div',attrs={"class":'CoronaContainer inner noPaddding'}).decompose()
    article=[]
    for section in body.findAll('p'):
        article.append(section.text)
    article=''.join(article)
    keywords=soup.find('meta',attrs={'name':'keywords'})['content']
    data=(url,title,image,writer,article_date,article,keywords)
    save_data(data)
    return data
出现以下错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-125-026157a57db9> in <module>
----> 1 get_article_details("https://www.almasryalyoum.com/news/details/1994354")

<ipython-input-124-42023343dc13> in get_article_details(url)
     16     keywords=soup.find('meta',attrs={'name':'keywords'})['content']
     17     data=(url,title,image,writer,article_date,article,keywords)
---> 18     save_data(data)
     19     return data
     20 

<ipython-input-123-5db81833f7e7> in save_data(data)
      4 def save_data(data):
      5 
----> 6     cur.execute("insert into shereen.articles values" ,str(data))
      7     conn.commit()
      8     print(data[0]+"   -->>saved")

~\anaconda3\lib\site-packages\pymysql\cursors.py in execute(self, query, args)
    166             pass
    167 
--> 168         query = self.mogrify(query, args)
    169 
    170         result = self._query(query)

~\anaconda3\lib\site-packages\pymysql\cursors.py in mogrify(self, query, args)
    145 
    146         if args is not None:
--> 147             query = query % self._escape_args(args, conn)
    148 
    149         return query

TypeError: not all arguments converted during string formatting
TypeError回溯(最近一次调用)
在里面
---->1获取文章详细信息(“https://www.almasryalyoum.com/news/details/1994354")
在获取文章详细信息(url)中
16关键字=soup.find('meta',attrs={'name':'keywords'})['content']
17数据=(url、标题、图像、作者、文章日期、文章、关键字)
--->18保存数据(数据)
19返回数据
20
在保存数据(数据)中
4 def保存_数据(数据):
5.
---->6 cur.execute(“插入shereen.articles值”,str(数据))
7康涅狄格州提交
8打印(数据[0]+“-->>已保存”)
执行中的~\anaconda3\lib\site packages\pymysql\cursors.py(self、query、args)
166通行证
167
-->168 query=self.mogrify(query,args)
169
170结果=self.\u查询(查询)
mogrify中的~\anaconda3\lib\site packages\pymysql\cursors.py(self、query、args)
145
146如果args不是None:
-->147 query=query%self.\u escape\u args(args,conn)
148
149返回查询
TypeError:在字符串格式化过程中并非所有参数都已转换

值列表应该用括号括起来,字符串(如果有)需要加引号

总之,您确实希望使用参数:

cur.execute('''insert into shereen.articles 
    (url,title,image,writer,article_date,article,keywords)
    values(?, ?, ?, ?, ?, ?, ?)''', data)

注意,我(试图)枚举
insert
语句中的目标列。这是SQL中的最佳实践,它使语句更易于调试,更灵活,并且在某种程度上适应目标表的DML更改。

值列表应该用括号括起来,字符串(如果有)需要引用

总之,您确实希望使用参数:

cur.execute('''insert into shereen.articles 
    (url,title,image,writer,article_date,article,keywords)
    values(?, ?, ?, ?, ?, ?, ?)''', data)

注意,我(试图)枚举
insert
语句中的目标列。这是SQL中的最佳实践,它使语句更易于调试,更灵活,并且在某种程度上对目标表的DML更改具有弹性。

出现了另一个错误,TypeError:不是在字符串格式化过程中转换的所有参数出现了另一个错误,TypeError:不是在字符串格式化过程中转换的所有参数