Python连接Mysql数据库
今天主要是要学习python要怎么连接数据库,这个是学习一个语言的很基础的东西了。
然后从菜鸟教程了解到,python连接数据库,主要要下载一些DB模块包,然后要安装,可以理解为Java中的驱动器啦。
然后它推荐我去哪里哪里下载包,然后安装,然后一大堆,我在想,这不就走了我以前学Java的老路子了嘛,jar要自己去下载,然后放在lib包,那段日子也太C了。
后面maven项目解放了我的双手,那我 不能走老路子。当然直接选择捷径了。
第一:包管理工具
搜索了很久,发现了一个新东东,Anaconda
原本介绍中,这个东西可以起到包的管理和下载的作用,但是问题是 我详细了解了一下之后,发现它就是一个全家桶,相当于把一堆需要的基础设备都包在了里面。
而我已经安装了python,也有了编译器,毕竟我比较喜欢Jet Brain的东东,所以为了热爱
我当然是放弃了这个选项。
很快啊!我就又找到了一个突破口。没错,就是我们的pycharm。
我相信它已经是一个成熟的工具了。
于是抱着这份想法,我沿着这条路去搜索,终于被我搜索到与之相关的东东。
不得不说,新人和有一定经验的人,他们解决问题的能力是不一样的,有时候我觉得对待新人不要只会让他去百度,得培养他们的解决方案的思路。
好废话多说了一会,言归正传。
以前这种东东 我可能会卡半天,但是不一会的功夫,我就找到了我想要的解决方案。
首先pycharm中是有自带的包管理窗口,位置在左上角的file->setting。如图
当你找到这个窗口之后,你就可以点击右边的加号,搜索你需要的工具库啦!
果然方便,这就像pom文档中的依赖一样,想要什么选择什么,或者说很类似vs code中的插件管理,想要什么点什么,舒服~
因为这里我比较喜欢玩mysql,所以就用了pymysql,而且这个工具好像是for py3的,py2的朋友应该要去下载mysql for python什么之类的。
pip 源设置
除此之外,有人可能会遇到下载速度太慢或者是无法下载的原因,我这边是没有这个问题。
我在搜索学习中发现了,这个interpreter和maven中有一个类似的地方,就是maven的config配置中有一个镜像的配置。
一般默认都是国外的镜像,但是我在国内为了速度都会换成阿里云的镜像。
在这里也是一样的道理。
在上面的窗口中有一个Manage Repositories的选项。
点击后可在里面的窗口替换上你所需要的pip源。
默认的pip 的源是
https://pypi.python.org/simple/
所以我们需要将源改为我们国内的源
国内知名的几个源
- 豆瓣(douban) https://pypi.douban.com/simple
- 阿里云 https://mirrors.aliyun.com/pypi/simple
- 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple
- 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple
第二:连接数据库
然后我仿照别人的简单案例,写下了这个demo
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost", "root", "root", "fund-sys" )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 使用execute方法执行SQL语句
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取一条数据
data = cursor.fetchone()
print ("Database version : %s " % data)
# 关闭数据库连接
db.close()
运行后结果输出版本,证明我连接成功啦~
Database version : 8.0.21
数据库的CRUD
创建table
# 打开数据库连接
db = pymysql.connect("localhost", "root", "root", "pythondb" )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 如果数据表已经存在使用 execute() 方法删除表。
cursor.execute("DROP TABLE IF EXISTS user")
# 创建数据表SQL语句
sql = """CREATE TABLE user (
name CHAR(20) NOT NULL,
age INT,
sex CHAR(1),
phone_num CHAR(20) )"""
cursor.execute(sql)
# 关闭数据库连接
db.close()
插入数据
db = pymysql.connect("localhost", "root", "root", "pythondb")
cursor = db.cursor()
sql = """INSERT INTO user
(name,age,sex,phone_num)
VALUES("c++--",25,"M","13687364988")"""
try:
cursor.execute(sql)
db.commit()
except Exception:
db.rollback()
finally:
db.close()
查询数据
db = pymysql.connect("localhost", "root", "root", "pythondb")
cursor = db.cursor()
sql = """SELECT * FROM user"""
try:
cursor.execute(sql)
data = cursor.fetchall()
for row in data:
name = row[0]
age = row[1]
sex = row[2]
phoneNum = row[3]
print("name:%s age:%s sex:%s phoneNum:%s" % (name, age, sex, phoneNum))
except Exception:
print("Error: unable to fecth data")
finally:
db.close()
更新数据
db = pymysql.connect("localhost", "root", "root", "pythondb")
cursor = db.cursor()
sql = """UPDATE user SET age='21' WHERE name='c++--'"""
try:
cursor.execute(sql)
db.commit()
except Exception:
db.rollback()
finally:
db.close()
删除数据
db = pymysql.connect("localhost", "root", "root", "pythondb")
cursor = db.cursor()
sql="""DELETE FROM user WHERE name='c++--'"""
try:
cursor.execute(sql)
db.commit()
except Exception:
db.rollback()
finally:
db.close()