Python向mysql存入数据出错.
问题描述
问题出现的环境背景及自己尝试过哪些方法
百度搜过了,没有详细的内容
相关代码
import re
import requests
from bs4 import BeautifulSoup
import pymysql
import time
# 向数据库插入数据
conn = pymysql.connect(
host='localhost', port=3306,
user='root',
password='root',
db='zhujia',
charset='utf8')
# 得到一个可以执行sql语句的光标对象
cursor = conn.cursor()
# 检测链接状态
def getHtml(urls):
try: r = requests.get(urls, timeout=30)
r.raise_for_status() # 如果状态不是200,引发HTTPError异常
r.encoding = r.apparent_encoding # 转换为合适的编码
return r.text
except:
return "产生异常"
# 获取数据
def getInfo(html):
html = BeautifulSoup(html, 'html.parser') mingcheng = html.find_all('table', class_='table')
diqu = html.find('tbody')
jiage = diqu.get_text().replace('\n\n\n', '\r').replace('\n\n', '').replace('\n', ' ').split(
"\r") # 去除多余空格并分割字符串
a = []
for jia in jiage: diqu = jia[:3].strip()
waisanyuan = jia[3:9].strip()
neisanyuan = jia[9:15].strip()
tuzazhu = jia[15:21].strip()
yumi = jia[21:26].strip()
doupo = jia[26:31].strip()
riqi = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
zuhe = [diqu+','+waisanyuan+','+neisanyuan+','+tuzazhu+','+yumi+','+doupo+','+riqi]
for i in zuhe:
a.append(i)
return a
# 数据入库
def saveData(dat):
for i in dat: data = i
# 定义要执行的sql语句
sql = "insert into pigs(地区名称,外三元,内三元,土杂猪,玉米,豆粕,日期) VALUES(%s,%s,%s,%s,%s,%s,%s);"
print(data)
try: # 执行sql语句
re = cursor.execute(sql, data)
# 从游标中获取结果
cursor.fetchall()
# 提交事务
conn.commit()
print("插入成功!")
# 操作单条数据获取被插入数据的id方法 last_id = cursor.lastrowid
except Exception as e:
# 有异常回滚事务 print("插入失败!")
conn.rollback()
# 关闭光标对象
cursor.close()
# 关闭数据库链接
conn.close()
# 主函数
def main():
urls = "https://zhujia.zhuwang.cc/areapriceinfo-140600.shtml" # 地址
html = getHtml(urls)
dat = getInfo(html) saveData(dat)
# 当模块被直接运行时,以下代码块将被运行
if __name__ == '__main__':
main()
你期待的结果是什么?实际看到的错误信息又是什么?
运行后:
请问如何解决?感谢~
回答:
已经解决,在for循环那里做一下改变
params = []
for jia in jiage:
diqu = jia[:3].strip() waisanyuan = jia[3:9].strip()
neisanyuan = jia[9:15].strip()
tuzazhu = jia[15:21].strip()
yumi = jia[21:26].strip()
doupo = jia[26:31].strip()
riqi = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
zuhe = {'地区名称':diqu,'外三元':waisanyuan,'内三元':neisanyuan,'土杂猪':tuzazhu,'玉米':yumi,'豆粕':doupo,'日期':riqi}
zhujia = list(zuhe.values())
params.append(zhujia)
以上是 Python向mysql存入数据出错. 的全部内容, 来源链接: utcz.com/a/159612.html