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

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

运行后:微信截图_20200227173401.png

请问如何解决?感谢~

阅读 1.8k
1 个回答

已经解决,在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)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题