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()

你期待的结果是什么?实际看到的错误信息又是什么?

运行后:Python向mysql存入数据出错.

请问如何解决?感谢~


回答:

已经解决,在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

回到顶部