嗯,这是一个不肯用Navicat而偏要使用命令行操作的倔强er。
本文是关于Python连接Mysql中踩到的坑,还提供了出坑的梯子~
1、准备工作:Mysql的安装、Python的安装,本文使用的是Python3.6和Mysql5.7 for Windows
关于Python的数据库包,我用的是pymysql,pycharm可以只在settints->interpreter里安装库,对于不熟悉pip操作的童鞋很友好。
点击右侧的加号
找到想要的库,点击下方的Install package,等待安装完成,点击上图的OK,就完成啦。
尝试在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












网友评论