在 MySQL 中将数据插入到表中

分享于2022年10月08日 mysql python web-scraping 问答
【问题标题】:Insert data into a table in MySQL在 MySQL 中将数据插入到表中
【发布时间】:2022-10-01 02:47:13
【问题描述】:

我从 truecar.com 提取数据。此信息包含不同汽车的价格和里程。现在,我想将此信息插入到表格中,但我的代码无法创建表格并且只返回 \'price\' 和 \'miles\' 而不是它们的数字。我怎样才能解决这个问题?

这是我的代码:

import requests
from bs4 import BeautifulSoup
import mysql.connector
car=str(input())
ur=\'https://www.truecar.com/used-cars-for-sale/listings/\'
url=ur+car
r=requests.get(url)
soup=BeautifulSoup(r.text,\'html.parser\')

data = []
for card in soup.select(\'[class=\"card-content vehicle-card-body order-3 vehicle-card-carousel-
body\"]\'):
price = card.select_one(\'[class=\"heading-3 margin-y-1 font-weight-bold\"]\').text

miles = card.select_one(\'div[class=\"d-flex w-100 justify-content-between\"]\').text

data.append({
    \'price\':price,
    \'miles\':miles
})
print(data)

cnx = mysql.connector.connect(user=\'root\', password=\'\',
                              host=\'127.0.0.1\',
                              database=\'truecar\')
cursor = cnx.cursor()
for price,miles in data:
     cursor.execute(\"INSERT INTO car VALUES(\\\'%s\\\',\\\'%s\\\')\"%(price,miles))
     cnx.commit()
cnx.close()
  • 请澄清您所说的“不起作用”是什么意思?请澄清实际发生的情况。
  • @ewong,而不是我表中的数字,我只有字符串 \'price\' 和 \'miles\'。我想在我的数据中有数字。
  • 很明显,在 \'for\' 循环附近的缩进存在问题。此处发布的代码是实际代码吗?在 another question 中,意图似乎是 print 语句属于 \'for\' 循环之前的行。

【解决方案1】:

如果只是执行以下代码:

price = 10
miles = 20

data = []
data.append({
    'price':price,
    'miles':miles
})

for price, miles in data:
    print(price, miles)

控制台上的输出将是 price miles 。因此,您访问的不是字典的值,而是键。因此,您不会将键而不是值写入数据库。有效的是以下代码:

price = 10
miles = 20

data = []
data.append({
    'price':price,
    'miles':miles
})

for entry in data:
    print(entry["price"], entry["miles"])

我认为 Saqib's answer 也应该考虑,因为添加数据添加到的数据库的列会导致更复杂的软件中的错误更少。

【讨论】: