实践1:
基本操作:
‘’’
创建connection 获取cursor
执行查询 执行命令 获取数据 处理数据
关闭cursor 关闭connection
‘’’
import pymysql
# 1.连接mysql数据库
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='root',db='mb',charset='utf8' ) # 传入一些参数 db database缩写
# 2.获取cursor 游标对象 通过连接对象获取
cs = conn.cursor()
# 3. 通过游标对象执行sql
r = cs.execute('select * from goods;') #有返回值,且为受影响记录的行数
print(r)
# 4.获取数据
print(cs.fetchone()) #获取第一条数据
print(cs.fetchone()) # 游标是会跟着动的 显示第2条数据
# 4.1 获取多条数据
print(cs.fetchmany(5)) #默认是返回1条
#是一个双重元组 可以获取多个
print(cs.fetchall())
print(cs.fetchone())
# 5.1 关闭游标
cs.close()
# 5.2 关闭连接
conn.close()
实践2:
已有goods表,在此基础上完成查询
“”"
使用面向对象完成商品查询
• 输入1:查询所有商品
• 输入2:所有商品种类
• 输入3:查询所有品牌
• 输入4:退出
• 输入5:插入数据
“”"
import pymysql
class MB(object):
def __init__(self):
self.conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='mb', charset='utf8')
self.cs = self.conn.cursor()
def run(self):
while True:
num = self.print_menu() #静态方法也是对象的,所以加self
if num == '1':
self.show_all_goods()
elif num == '2':
self.show_all_cates()
elif num == '3':
self.show_all_brands()
elif num == '4':
break
elif num == '5':
self.insert_data()
else:
print('输入有误')
#静态方法 可以省空间,在使用时不占内存,因为实例方法在定义的时候不需要实例空间
@staticmethod
def print_menu():
print('-------mb shop-----')
print('输入1:查询所有商品')
print('输入2:所有商品种类')
print('输入3:查询所有品牌')
print('输入4:退出')
print('输入5:插入数据')
num = input('请输入 ')
return num
def show_all_goods(self):
sql = 'select * from goods;'
# self.cs.execute(sql)
# res = self.cs.fetchall()
# for data in res:
# print(data)
#print(res)
#return res
self.execute_sql(sql)
def show_all_cates(self):
sql = 'select * from goods_cates;'
self.execute_sql(sql)
def show_all_brands(self):
sql = 'select brand_name from goods group by brand_name;'
self.execute_sql(sql)
def insert_data(self):
sql = "insert into lcy (name) values ('mm');"
self.cs.execute(sql)
self.conn.commit()
def execute_sql(self,sql):
self.cs.execute(sql)
res = self.cs.fetchall()
for data in res:
print(data)
def __del__(self):
self.conn.close()
def main():
mb = MB()
mb.run()
if __name__ == '__main__':
main()