目录
导言
做软件,数据库是避免不了的,大型的我喜欢mysql,小型的喜欢sqlite。前面学Flask的时候,有人推荐Navicat给我,我就是用的一发不可收拾了。前面喜欢用中文,导致了现在数据库的表字段中英文混配,后面要养成全部用英文驼峰表示的习惯。
数据库取数模块
模块听起来很高大上的,其实在Python里就是一段程序,比如我把读mysql数据库的操作写成了一个函数,那这就是个模块,开始慢慢的有了模块化的思想。每次我从数据库取数,数据库名和表格好说,就是取的字段不固定,于是考虑用来可变参数,第一次玩。看样子什么功能都不是凭空出现的。
程序解读
import pymysql.cursors #getInfo(databasename,tablename,field,sorted) 本来想做成数据库名、表名、字段和排序的,算了,还是把排序去掉吧。 def getInfo(databasename,tablename,*args): field = str(args[:]).replace("'",'').replace('(','').replace(')','') 用字符串转换,把field改造成适合给sql语句用 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root',charset='utf8mb4', db=f'{databasename}') 我最喜欢用f格式化表示了,真的很省事 with conn.cursor(cursor=pymysql.cursors.DictCursor) as cursor: sql = f"select {field} from {tablename} where {args[-2]}!='None';" 把空的去掉,对付空值在Flutter里是一门学问 cursor.execute(sql) result = cursor.fetchall() conn.close() #整理成列表外包元组的形式,这也是我处理数据最喜欢玩的一种方式。 tlist1 = [] for row in result: tlist1.append(tuple(row.values())) tbdlist = set(tlist1) sTbdlist = sorted(tbdlist,key=lambda x:x[2],reverse=True) 最后按照顺序排列即可 return sTbdlist bondInvestmentt = getInfo('info','bondfunds','fundNum','fundname','capital','profit') print(bondInvestmentt)
数据库取出来的显示结果
源代码
import pymysql.cursors
#getInfo(databasename,tablename,field,sorted)
def getInfo(databasename,tablename,*args):
field = str(args[:]).replace("'",'').replace('(','').replace(')','')
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root',charset='utf8mb4', db=f'{databasename}')
with conn.cursor(cursor=pymysql.cursors.DictCursor) as cursor:
sql = f"select {field} from {tablename} where {args[-2]}!='None';"
#sql = f"select {field} from {tablename} where {args[-1]}!='None';"
cursor.execute(sql)
result = cursor.fetchall()
conn.close()
#整理成列表外包元组的形式
tlist1 = []
for row in result:
tlist1.append(tuple(row.values()))
tbdlist = set(tlist1)
sTbdlist = sorted(tbdlist,key=lambda x:x[2],reverse=True)
return sTbdlist
bondInvestmentt = getInfo('info','bondfunds','fundNum','fundname','capital','profit')
for x in bondInvestmentt:
print(x)