美文网首页
2018-05-20

2018-05-20

作者: Shelly_Wu | 来源:发表于2019-03-23 01:30 被阅读0次

嗯,这是一个不肯用Navicat而偏要使用命令行操作的倔强er。

本文是关于Python连接Mysql中踩到的坑,还提供了出坑的梯子~


1、准备工作:Mysql的安装、Python的安装,本文使用的是Python3.6和Mysql5.7 for Windows

关于Python的数据库包,我用的是pymysql,pycharm可以只在settints->interpreter里安装库,对于不熟悉pip操作的童鞋很友好。

点击右侧的加号

image

找到想要的库,点击下方的Install package,等待安装完成,点击上图的OK,就完成啦。

image

尝试在Python中连接数据库

from urllib import request
from bs4 import BeautifulSoup
import pymysql

# mysql连接信息(字典形式)
db_config ={
    'host': '127.0.0.1',
    'port': 3306,
    'user': 'root',
    'password': '151765',
    'db': 'pytest',
    'charset': 'utf8'
}
# 获得数据库连接
connection = pymysql.connect(**db_config)
url = r'http://www.jianshu.com/'
# 模拟浏览器头
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
}
page = request.Request(url, headers=headers)
page_info = request.urlopen(page).read().decode('utf-8')
soup = BeautifulSoup(page_info, 'html.parser')
urls = soup.find_all('a', 'title')

try:
    # 获得数据库游标
    with connection.cursor() as cursor:
        sql = 'insert into titles(title, url) values(%s, %s)'
        for u in urls:
            # 执行sql语句
            cursor.execute(sql, (u.string, r'http://www.jianshu.com'+u.attrs['href']))
    # 事务提交
    connection.commit()
finally:
    # 关闭数据库连接
    connection.close()

报错1:


image.png

这个看起来是连接错误,端口问题,我先排除了host和port无误,最后发现居然是Mysql被设置成手动启动,导致服务器根本没有启动(你让人家Python怎么访问!!!)
solutions:
1、在cmd中启动


image.png
2、计算机->右键 管理,在服务中启动MySQL
image.png

报错2:mysql.connector.errors.ProgrammingError: 1049 (42000): Unknown database 'pytest'
这是MySQL里没找到pytest这个数据库,建一个。
在cmd里进入MySQL下的bin目录,输入安装时设置的密码


image.png

新建一个名为pytest的数据库


image.png
报错3:mysql.connector.errors.ProgrammingError: 1046 (42000):
Unknown table 'titles'
在pytest下建表,但是mysql不能建空表,至少要有一行
image.png

报错3.x:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use xxxxx at line 1
这个报错还没找到原因,可能是mysql5.7建表换行的格式问题,有网友把()打成<>(cmd下他俩很像)导致这个原因,目前我的错误还不知道
报错4:mysql.connector.errors.ProgrammingError: 1046 (42000): Unknown column 'title'
表中没有title这一行,Python找不到这个目标
添加title和url字段


image.png

爬虫代码终于跑成功了,接下来我们看一下数据库表中的内容:
use pytest进入数据库,查看这个数据库下所有的表

image.png
查看表中所有的字段
image.png
查看表中所有的数据
image.png
附上MySQL的一些语句
https://www.cnblogs.com/zsg88/p/7818684.html

相关文章

网友评论

      本文标题:2018-05-20

      本文链接:https://www.haomeiwen.com/subject/ffftjftx.html