如何在python中使用PyMYSQL将数据存储到数据库中

时间:2016-02-27 14:37:23

标签: python beautifulsoup pymysql

我正在抓取一个网站并从中获取公司的详细信息,现在我尝试将数据存储到数据库中。但我得到一些错误,如

raise InternalError(errno, errorvalue)
pymysql.err.InternalError: (1054, "Unknown column 'companyaddress' in 'field list'")

这是我的代码

for d in companydetail:
    lis = d.find_all('li')
    companyname = lis[0].get_text().strip()
    companyaddress = lis[1].get_text().strip()
    companycity = lis[2].get_text().strip()
try:
   companypostalcode = lis[3].get_text().strip()
   companypostalcode = companypostalcode.replace(",","")

except:
   companypostalcode = lis[3].get_text().strip()
try:
   companywebsite = lis[4].get_text().strip()
except IndexError:
   companywebsite = 'null'
print (companyname)                          
print (companyaddress)
print (companycity)
print (companypostalcode)
print (companywebsite)
try:
   with connection.cursor() as cursor:
   print ('saving to db')
   cursor.execute("INSERT INTO company(companyname,address,city,pincode,website) VALUES (companyname,companyaddress,companycity,companypostalcode,companywebsite)")
   connection.commit()
   connection.close()                            

我正在获取我想要的数据但是我无法将数据存储到数据库中。 我在打印(公司名称)和打印(campanyaddress)时得到的结果是:

NINGBO BOIGLE DIGITAL TECHNOLOGY CO.,LTD.
TIANYUAN INDUSTRIAL ZONE CIXI NINGBO
ZHEJIANGNINGBO
315325
http://www.boigle.com.cn

2 个答案:

答案 0 :(得分:1)

您不能像在以下那样简单地在查询字符串中使用变量名称:

cursor.execute("INSERT INTO company(companyname,address,city,pincode,website) VALUES (companyname,companyaddress,companycity,companypostalcode,companywebsite)")

相反,将变量传递给查询,使其参数化

params = (companyname, companyaddress, companycity, companypostalcode, companywebsite)
cursor.execute("""
    INSERT INTO 
        company
        (companyname, address, city, pincode, website) 
    VALUES 
        (%s, %s, %s, %s, %s)
""", params)

答案 1 :(得分:0)

   cursor.execute("INSERT INTO company(companyname,address,city,pincode,website) VALUES (companyname,companyaddress,companycity,companypostalcode,companywebsite)")

第二个括号中的值被解释为表字段,而不是python变量。尝试

   cursor.execute("""INSERT INTO company(
           companyname,address,city,pincode,website) 
       VALUES (%s, %s, %s, %s, %s)""",
       (companyname, companyaddress, companycity, 
        companypostalcode, companywebsite))

代替。您可能还想咨询the docs