最近用python写了一个查询数据库的功能。该功能用到的知识点有:1、全局变量的定义。2、方法的互相调用。3、连接mysql
连接mysql用的是MySQLdb,安装方法自请百度,太多了。这里不再赘述。
代码:
#!/usr/bin/python
#encoding=utf-8
import MySQLdb
import string
import GetSqlUtil
db = MySQLdb.connect(
host="192.168.1.35", # 主机名
user="xxxx", # 用户名
passwd="xxxx", # 密码
db="xxxx",
charset='utf8'
) # 数据库名称
# 查询前,必须先获取游标
#cur = db.cursor() ,这个是数组形式返回
cur = db.cursor(cursorclass=MySQLdb.cursors.DictCursor) #这个是键值对的形式返回,用这个比较方便
# 执行的都是原生SQL语句
cur.execute("select * from t_wiki_cms_template where TEMPLATE_REAL_STATE=1")
total=0
normal=0;
unnormal=0;
for row in cur.fetchall():
#print(row['TEMPLATE_NAME'])
fileName=row['TEMPLATE_FILE_NAME']
content=row['TEMPLATE_CONTENT']
chanelId=row['CHANNEL_ID']
if(".jsp"==fileName[-4:] ):
#if('pageEncoding="UTF-8"' in content):
if(content!=None and (content.find('pageEncoding="UTF-8"')!=-1)):
normal=normal+1
#print(str(total)+"正常:"+fileName+" : "+row['TEMPLATE_NAME']+" : "+row['CHANNEL_NAME'])
else:
unnormal=unnormal+1
domainName=GetSqlUtil.getDomainByChanelId(row['CHANNEL_ID']);
print(str(total)+"不正常:"+fileName+" - 模板名:"+row['TEMPLATE_NAME']+" - 频道名:"+row['CHANNEL_NAME']+" - 域名:"+domainName)
total=total+1
db.close()
GetSqlUtil.db.close()
print("总数量:"+str(total)+" 正常:"+str(normal)+" 不正常:"+str(unnormal))
上面的代码用到了GetSqlUtil,这是我定义的一个py文件。
参考目录
GetSqlUtil中用到了全局变量和函数定义,参考代码:
#!/usr/bin/python
#encoding=utf-8
import MySQLdb
import string
db = MySQLdb.connect(
host="192.168.1.35", # 主机名
user="xxxx", # 用户名
passwd="xxxx", # 密码
db="xxxx",
charset='utf8'
) # 数据库名称
# 查询前,必须先获取游标
#cur = db.cursor()
cur = db.cursor(cursorclass=MySQLdb.cursors.DictCursor)
def getDomainByChanelId(chanelId):
global cur #定义的全局变量
domainName=""
cur.execute("SELECT * FROM t_wiki_cms_publish_server_rules WHERE SERVER_RULES_ID=(select SERVER_RULES_ID from T_WIKI_CMS_CHANNEL where CHANNEL_ID='"+str(chanelId)+"' AND CHANNEL_STATE=1)")
for row in cur.fetchall():
domainName=row['SERVER_DOMAIN']
#db.close()
return domainName
总结:从上面的代码来看,实现同样的功能,相对java来说。用python来开发,是简洁高效的。