标签:__ fetchall .__ rollback cur python self goods print
转载自:https://blog.csdn.net/vivian_wanjin/article/details/82778589
import pymysql
class JD(object):
def __init__(self):
self.dic = {0: self.__close,
1: self.__fetch_all_info,
2: self.__fetch_cate,
3: self.__fetch_brand,
4: self.__add_info,
5: self.__find_info,
6: self.__find_info_safe
}
# user,和password换成你的root和密码
self.__conn = pymysql.Connect(host="localhost",
port=3306,
database="JDDB",
user="demouser",
password="demopassword",
charset="utf8")
self.__cur = self.__conn.cursor()
def __show_result(self, result):
# print(type(result)) # <cass 'tuple'>
for r in result:
print(r)
# 查询所有商品信息
def __fetch_all_info(self):
sql = ''' select * from goods '''
affected = self.__cur.execute(sql)
print("influenced %d row" % affected)
self.__show_result(self.__cur.fetchall())
# 查询种类信息
def __fetch_cate(self):
sql = ''' select * from goods_cates '''
self.__cur.execute(sql)
self.__show_result(self.__cur.fetchall())
# 查询品牌信息
def __fetch_brand(self):
sql = ''' select * from goods_brands '''
self.__cur.execute(sql)
self.__show_result(self.__cur.fetchall())
# 添加一个商品类型
def __add_info(self):
goods_type = input("please input a new goods type: ")
sql = ''' insert into goods_cates(name) values ("%s") '''
self.__cur.execute(sql, goods_type)
self.__conn.commit()
# 通过ID 查找商品
def __find_info(self):
# 当输入 "id or True" 时会发生sql注入,看到本不该看到的东西
goods_type = input("please input a ID of cates: ")
sql = ''' select * from goods where id=%s''' % goods_type
self.__cur.execute(sql)
self.__show_result(self.__cur.fetchall())
# 通过ID 查找商品 防SQL注入
def __find_info_safe(self):
goods_type = input("please input a ID of cates: ")
# 此处不同于python的字符串格式化,必须全部使用%s占位
sql = ''' select * from goods where id=%s'''
# 通过参数化列表(元组)防止这种攻击,但是会产生一个warning,可以直接存储到日志log中
self.__cur.execute(sql, (goods_type,))
self.__show_result(self.__cur.fetchall())
# 关闭连接,退出
def __close(self):
self.__cur.close()
self.__conn.close()
exit()
def run(self):
while True:
print('*' * 50)
print("1查询所有商品信息")
print("2查询所有商品在种类信息")
print("3查询所有商品在品牌信息")
print("4添加商品种类")
print("5根据id查询商品信息")
print("6根据id查询商品信息安全方式")
print("0退出")
print('*' * 50)
option = int(input("please input your option: "))
try:
self.dic[option]()
# string() # eval()
except KeyError:
print("enter is error! ")
def main():
jd = JD()
jd.run()
if __name__ == '__main__':
main()
标签:__,fetchall,.__,rollback,cur,python,self,goods,print 来源: https://blog.csdn.net/imsuhxz/article/details/90765788
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。