国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python讀取ini文件、操作mysql、發(fā)送郵件實(shí)例

Python讀取ini文件、操作mysql、發(fā)送郵件實(shí)例

2020-05-18 10:04腳本之家 Python

這篇文章主要介紹了Python讀取ini文件、操作mysql、發(fā)送郵件實(shí)例,本文重點(diǎn)在Mysql操作的講解上,包含查詢、插入、更新和刪除操作,需要的朋友可以參考下

我是閑的沒事干,2014過的太浮夸了,博客也沒寫幾篇,哎~~~ 用這篇來記錄即將逝去的2014

python對各種數(shù)據(jù)庫的各種操作滿大街都是,不過,我還是喜歡我這種風(fēng)格的,涉及到其它操作,不過重點(diǎn)還是對數(shù)據(jù)庫的操作。呵~~

Python操作Mysql

首先,我習(xí)慣將配置信息寫到配置文件,這樣修改時(shí)可以不用源代碼,然后再寫通用的函數(shù)供調(diào)用

新建一個(gè)配置文件,就命名為conf.ini,可以寫各種配置信息,不過都指明節(jié)點(diǎn)(文件格式要求還是較嚴(yán)格的):

 

復(fù)制代碼 代碼如下:


[app_info]
DATABASE=test
USER=app
PASSWORD=123456
HOST=172.17.1.1
PORT=3306

 

[mail]
host=smtp.163.com
mail_from=zhoujie0111@126.com
password=654321
send_to=zhoujie0111@139.com;zhoujie0111@163.com

 

同目錄下新建文件db.py,精悍的代碼如下,不解釋:

 

復(fù)制代碼 代碼如下:


# -*-coding:utf-8 -*-

 

import MySQLdb   #首先必須裝這兩個(gè)包
import ConfigParser

cf=ConfigParser.ConfigParser()
cf.read("conf.ini")

DATABASE=cf.get("app_info","DATABASE")
USER=cf.get("app_info","USER")
PASSWORD=cf.get("app_info","PASSWORD")
HOST=cf.get("app_info","HOST")
PORT=cf.get("app_info","PORT")

def mysql(sql):
    try:
        conn=MySQLdb.connect(host=HOST,user=USER,passwd=PASSWORD,db=DATABASE,port=PORT)
        cur = conn.cursor()
        cur.execute(sql)
        rows = cur.fetchall()
        conn.commit()  #這個(gè)對于增刪改是必須的,否則事務(wù)沒提交執(zhí)行不成功
        cur.close()
        conn.close()
        return rows
    except MySQLdb.Error,e:
        print "Mysql Error %d: %s" % (e.args[0], e.args[1])

 

上面是封裝了操作數(shù)據(jù)庫的方法,只需提供一個(gè)sql語句,CRUD均可操作。下面來YY一些數(shù)據(jù)來測試下增刪改查的具體用法(easy的,我真是閑),接著上面的代碼寫:

 

復(fù)制代碼 代碼如下:


def operation():
    #查詢
    select = mysql('select * from test')

 

    #插入
    '''
    插入這個(gè)地方有2點(diǎn)需要注意:
    1.插入某幾列如下指定,插入全部可以不指定列,但必須后面插入的值要按順序
    2.注意下面的type列兩邊有反斜點(diǎn),這是因?yàn)閠ype在我這個(gè)數(shù)據(jù)庫里有個(gè)表也叫這個(gè),或者可以把它叫關(guān)鍵字,不加反斜點(diǎn)插入會(huì)失敗
    3.這沒好說的,呵呵,數(shù)字占位符用%d,字符串用%s,且字符串占位符必須用雙引號括起來
    '''
    insert = mysql('insert into test (name,number,`type`) values("%s",%d,"%s")'%('jzhou',100,'VIP'))

    #更新
    mysql('update test set number=%d where name="%s"'%(99,'jzhou'))

    #刪除
    delete = mysql('delete from test where number = %d and `type`="%s"'%(100,'jzhou'))

    return select #我返回這個(gè)是為了下面發(fā)送郵件用的,順便增加個(gè)發(fā)送郵件的功能

 

我只是想把這個(gè)簡單的操作搞的復(fù)雜點(diǎn),增加個(gè)發(fā)送郵件的功能,也是接著上面的代碼:

 

復(fù)制代碼 代碼如下:


mailto_list=[]
send_info=cf.get("mail","send_to")
send_array=send_info.split(";")
for i in range(len(send_array)):
    mailto_list.append(send_array[i])

 

mail_host=cf.get("mail","host")
mail_from=cf.get("mail","mail_from")
mail_password=cf.get("mail","password")

def send_mail(to_list,sub,content):
    me=mail_from
    msg=MIMEText(content,_subtype='html',_charset='utf-8')
    msg['Subject']=sub
    msg['From']=me
    msg['To']=";".join(to_list)
    try:
        s=smtplib.SMTP()
        s.connect(mail_host)
        s.login(mail_from,mail_password)
        s.sendmail(me,to_list,msg.as_string())
        s.close()
        return True
    except Exception,e:
        print str(e)
        return False

 

發(fā)送郵件的配置我也是寫在conf.ini里的,在主函數(shù)里調(diào)用一下發(fā)送郵件來結(jié)束這個(gè)東西:

 

復(fù)制代碼 代碼如下:

if __name__ == '__main__':
    sub = u'不要問我為什么寫這篇博客,閑,就是任性!'
    content = operation()
    if send_mail(mailto_list,sub,content):
        print 'send success'
    else:
        print 'send failed'

 

其實(shí)我還想說一下python操作postgresql,跟mysql非常類似,下載包psycopg2,不太相同的就是postgresql中執(zhí)行的sql語句都要加雙引號,來感受一下:

 

復(fù)制代碼 代碼如下:


# -*-coding:utf-8 -*-
import psycopg2
import ConfigParser

 

cf=ConfigParser.ConfigParser()
cf.read("conf.ini")

DATABASE=cf.get("cmdb_info","DATABASE")
USER=cf.get("cmdb_info","USER")
PASSWORD=cf.get("cmdb_info","PASSWORD")
HOST=cf.get("cmdb_info","HOST")
PORT=cf.get("cmdb_info","PORT")

def psql(sql):
    try:
        conn = psycopg2.connect(database=DATABASE, user=USER, password=PASSWORD, host=HOST, port=PORT)
        cur = conn.cursor()
        cur.execute(sql)
        rows = cur.fetchall()
        conn.commit()
        cur.close()
        conn.close()
        return rows
    except Exception,e:
        print e

def psql_oper():
    sql="select \"name\",\"type\" from \"test\" where \"name\" = 'jzhou'"
    rows=psql(sql)
    print rows

 

我總結(jié)了下,此博客雖簡單,但包含三個(gè)重要的知識(shí)點(diǎn),^_^

1、python讀取ini文件(要import ConfigParser)
2、python操作mysql
3、python發(fā)送郵件

4、發(fā)表出來的都是經(jīng)過實(shí)踐檢驗(yàn)的,即使很簡單,這是一種態(tài)度!

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 黄色片在线播放 | 毛片免费观看网址 | 黄色tv网站 | 亚洲国产精品久久久久秋霞不卡 | 中文字幕欧美日韩 | 夜夜久久| 国产日韩视频 | 亚洲精品视频在线播放 | 亚洲免费观看在线视频 | 日韩成人在线观看视频 | 色爱av| 蜜桃av一区二区三区 | 国产在线精品一区二区 | 一区二区三区高清不卡 | 欧美一级大片 | 在线免费日韩 | 91尤物网站网红尤物福利 | 国产小视频在线 | 日韩一区二区在线播放 | 日韩欧美国产一区二区三区 | 亚洲国产人午在线一二区 | 国产精品久久久久久久久久久天堂 | 成人综合视频网 | 欧美精品成人 | 91精品国产综合久久久蜜臀粉嫩 | 一区二区在线免费观看 | 久久美女视频 | 国产经典一区 | 成人免费网站在线 | 国产99久久 | 成人h动漫精品一区二区器材 | 国产精品久久久久久中文字 | 美女国产精品 | 国产亚洲精品美女久久久久久久久久 | 久久精品国产精品亚洲 | 成人免费视频观看 | 黄色99 | 日本久久久久久久久久久久 | 久久av网 | 国产精品久久久久久久久 | 亚洲乱码国产乱码精品精98午夜 |