我已经用python创建了一个脚本,能够从网页收集数据并将其存储到 mysql
. 当数据正确插入 mysql
但是,我的脚本可以在控制台中打印它们。
我的问题是:如何将以下三行 Package 在一个单独的函数中,并从存储器中打印数据?
mycursor.execute("SELECT * FROM webdata")
for item in mycursor.fetchall():
print(item)
我的完整脚本:
import mysql.connector
from bs4 import BeautifulSoup
import requests
URL = "https://www.tripadvisor.com.au/Restaurants-g255068-c8-Brisbane_Brisbane_Region_Queensland.html"
def get_info(link):
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd = "123",
database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("DROP TABLE if exists webdata")
mycursor.execute("CREATE TABLE if not exists webdata (name VARCHAR(255), bubble VARCHAR(255), review VARCHAR(255))")
response = requests.get(link)
soup = BeautifulSoup(response.text,"lxml")
for items in soup.find_all(class_="shortSellDetails"):
name = items.find(class_="property_title").get_text(strip=True)
bubble = items.find(class_="ui_bubble_rating").get("alt")
review = items.find(class_="reviewCount").get_text(strip=True)
mycursor.execute("INSERT INTO webdata (name,bubble,review) VALUES (%s,%s,%s)",(name,bubble,review))
mydb.commit()
#I wish to use the follwing three lines within another function to do the same
mycursor.execute("SELECT * FROM webdata")
for item in mycursor.fetchall():
print(item)
if __name__ == '__main__':
get_info(URL)
3条答案
按热度按时间gzjq41n41#
您考虑过使用django模型框架吗?它允许您将任何表作为python对象进行交互。
在现有的数据库中,您可以将其转换为此处所述的模型,这只是在django设置文件中设置数据库的问题
然后可以使用django操作从表中创建模型
然后,您将在您的
models.py
然后可以访问的文件。您将得到这样的对象(不太了解数据库),您只需添加一个
__str__()
句柄,以便在打印对象时正确格式化:然后可以像所有模型一样与该对象交互(请确保将模型添加到
INSTALLED APPS
例如。shortSell
和表演./manage.py makemigrations & ./manage.py migrate
)例如:或者您也可以直接使用模型接口创建对象
igetnqfo2#
我想下面是你如何把东西分成不同的功能,并按要求打印数据。确保像这里建议的那样在for循环之外提交。
ftf50wuq3#
我的评论是为了描述这个改变了的代码: