py3.7连mysql以及方法相互调用

py3.7连mysql以及方法相互调用

  • py3.7连mysql以及方法相互调用
    • 连接mysql

py3.7连mysql以及方法相互调用

最近用python写了一个查询数据库的功能。该功能用到的知识点有:1、全局变量的定义。2、方法的互相调用。3、连接mysql

连接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文件。
参考目录
py3.7连mysql以及方法相互调用_第1张图片
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来开发,是简洁高效的。

你可能感兴趣的:(python)