pymysql.err.ProgrammingError: (1064, “You have an error in your SQL syntax;解决方法

开始的时候我的代码是这样的:

import requests
from pymysql import *
import pymysql

url = "https://movie.douban.com/j/chart/top_list?"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
}
param = {
    'type': '24',
    'interval_id': '100:90',
    'action': '',
    'start': '0',  # 从库中的第几部电影去取
    'limit': '20',  # 一次取出的个数
}
data1 = []
response = requests.get(url,headers=headers,params=param).json()
for i in range(20):
    data = []
    res = response[i]
    data.append(res['score'])
    data.append(res['title'])
    types = res['types']
    c = ""
    for i in types:
        c = c + i + " "
    data.append(c)
    d = ""
    regions = res['regions']
    for j in regions:
        d = d + j + " "
    data.append(d)
    e = ""
    actors = res['actors']
    for k in actors:
        e = e + k + " "
    data.append(e)
    data1.append(data)
for i in data1:
    print(i)

conn = pymysql.connect(host='localhost', port=3306, user='root', password='root', database='douban', charset='utf8')
cs1 = conn.cursor()
for i in data1:
    cs1.execute("insert into shuju values('%s','%s','%s','%s','%s')" % (i[0], [1], i[2], i[3], i[4]))
conn.commit()
conn.close()

运行后的结果报错

pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax......后面还有不全列出来

这是因为在sql写入时,如果所写入文本中含有双引号,就会报错
解决方法:

使用pymysql.escape_string()方法,并且使用三个双引号写法

import requests
from pymysql import *
import pymysql

url = "https://movie.douban.com/j/chart/top_list?"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
}
param = {
    'type': '24',
    'interval_id': '100:90',
    'action': '',
    'start': '0',  # 从库中的第几部电影去取
    'limit': '20',  # 一次取出的个数
}
data1 = []
response = requests.get(url,headers=headers,params=param).json()
for i in range(20):
    data = []
    res = response[i]
    data.append(res['score'])
    data.append(res['title'])
    types = res['types']
    c = ""
    for i in types:
        c = c + i + " "
    data.append(c)
    d = ""
    regions = res['regions']
    for j in regions:
        d = d + j + " "
    data.append(d)
    e = ""
    actors = res['actors']
    for k in actors:
        e = e + k + " "
    data.append(e)
    data1.append(data)
for i in data1:
    print(i)

conn = pymysql.connect(host='localhost', port=3306, user='root', password='root', database='douban', charset='utf8')
cs1 = conn.cursor()
for i in data1:
    cs1.execute("""insert into shuju values("%s","%s","%s","%s","%s")""" % (i[0], [1], i[2], i[3], i[4]))
conn.commit()
conn.close()

这样就不会出现错误了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值