驱动选择;
1.MySQLDB .已经有C驱动mysql的成熟包,Mysqldb包python对这个c驱动包封装。优点是效率高,py2环境和众多项目中使用。
pip install MySQL-pathon
缺点windows下安装报错。可以去网上找对应平台编译后的,whl安装(。也可
能出错)。最终解决去mysql官网下载对应平台的connector.msi安装。
2. python-connector.,python书写,类似MySQLdb但不依赖C语言驱动。
3.(推荐)pymysql 纯python写的。缺点效率稍低。优点安装方便,完全兼容mysqldb 的语法。市场占有越来越高。
mysql 安装
在终端下输入以下命令:
pip install pymysql
成功安装后如下图所示:
一下例题使用异常捕获try…except…finally
异常捕获try…except…finally语法:
try括住可能发生问题的语句。,偷懒方法try括住程序最外层,但这样
捕获后不好定位出错地方。
except 后面跟异常的类名,如果捕获到这种异常,那么就会执行语句块,
执行发生异常后的一些处理,处理比如 用户提示信息
记录日志、业务逻辑。
finally 不管程序正常运行,或是出现某种异常被捕获,再或是出现异常没有被·捕获,
最终都会一定执行finally语句块。
捕获异常应该适当使用,使用过多代码会乱,
不用的话错误可能导致程序崩溃带来损失。
场景:捕获数据库操作代码
表格 shop
表格 person
import pymysql.cursors
connection = pymysql.connect(host='127.0.0.7',
port=3306,
user='root',
password='password', # 安全风险,未来会从环境变量读取
db='test', # 数据库test
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor # 返回字典格式的结果集。不写返回默认元组格式。
)
try:
# 实现mysql查找功能,
with connect.cursor() as cursor:
sql2 = """ SELECT * FROM shop;""" # 表名 shop
cursor.execute(sql2)
result1 = cursor.fetchall()
print(result1)
# 实现mysql插入功能
with connect.cursor() as cursor:
sql3 = """ INSERT INTO person VALUES (%s, %s)""" # 表名person
result3 = cursor.execute(sql3, (None,'青青'))
print(result3)
# 实现mysql更新功能
with connect.cursor() as cursor:
sql4 = """ UPDATE shop SET dealer='F' WHERE price='1.45'"""
cursor.execute(sql4)
sql5 = """ SELECT * FROM shop;"""
cursor.execute(sql5)
result4 = cursor.fetchall()
# 实现mysql删除功能
with connect.cursor() as cursor:
sql6 = """ DELETE FROM shop WHERE dealer='A'"""
cursor.execute(sql6)
sql7 = """ SELECT * FROM shop;"""
cursor.execute(sql7)
result5 = cursor.fetchall()
# 把表名shop更改成myshop
sql8 = """ alter table shop rename myshop;"""
cursor.execute(sql8)
connect.commit()
except Exception as e:
print(e)
finally:
connect.close()
补充(后来用到的语法:)
COUNT() 函数返回匹配指定条件的行数。
1.SQL COUNT(column_name) 语法
COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):
SELECT COUNT(column_name) FROM table_name
2.SQL COUNT() 语法
COUNT() 函数返回表中的记录数:
SELECT COUNT(*) FROM table_name
3.练习用到的COUNT计数语句
import pymysql
connection = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='xxx', database='jd')
cursor = connection.cursor()
#gray 查询数据库中产品颜色为深空灰色的产品的个数
cursor.execute("""select COUNT(product_color) from comment WHERE product_color = '深空灰色'""")
gray = cursor.fetchone()
# golden 查询数据库中产品颜色金色的产品的个数
cursor.execute("""select COUNT(product_color) from comment WHERE product_color = '金色'""")
golden = cursor.fetchone()
# silver 查询数据库中产品颜色银色的产品的个数
cursor.execute("""select COUNT(product_color) from comment WHERE product_color = '银色'""")
silver = cursor.fetchone()
print(f'深空灰色:{gray},金色:{golden},银色:{silver}')