python 3 pyenv版本管理與pymsql、paramiko模塊

Geo3127 8年前發布 | 12K 次閱讀 Python開發

來自: http://my.oschina.net/eddylinux/blog/619080


這里使用python3版本
使用pyenv進行python多版本管理
這里使用使用的系統CentOS release 6.5 (Final)
1.安裝pyenv
[root@localhost ~]# curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

編輯~/.bash_profile
# the following to ~/.bash_profile:

export PATH="/root/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

2.安裝python3.4.2
[root@localhost ~]# pyenv install 3.4.2
[root@localhost ~]# pyenv local 3.4.2

3.pyenv使用
pyenv versions

查看當前 pyenv 可檢測到的所有版本,處于激活狀態的版本前以 * 標示。

 $ pyenv versions
  system
  3.4.2
  3.4.2/envs/eddy_001
  3.5.0
* eddy_001 (set by /root/magedu/.python-version)

pyenv version
查看當前處于激活狀態的版本,括號中內容表示這個版本是由哪條途徑激活的(global、local)
$ pyenv version
eddy_001 (set by /root/magedu/.python-version

pyenv uninstall
卸載一個版本
$ pyenv uninstall eddy_001 

為所有已安裝的可執行文件 (如:~/.pyenv/versions/*/bin/*) 創建 shims,因此,每當你增刪了 Python 版本或帶有可執行文件的包(如 pip)以后,都應該執行一次本命令
$ pyenv install 3.4.2
$ pyenv rehash

pyenv global
設置全局的 Python 版本,通過將版本號寫入 ~/.pyenv/version 文件的方式。
$ pyenv global 3.4.0

pyenv local
設置面向程序的本地版本,通過將版本號寫入當前目錄下的 .python-version 文件的方式。通過這種方式設置的 Python 版本優先級較 global 高。
pyenv會從當前目錄開始向上逐級查找 .python-version 文件,直到根目錄為止。若找不到,就用 global 版本。
$ pyenv local 3.4.2


4.jupyter
ipython web頁面版,具體使用可自己摸索
pip install ipython
pip install jupyter
jupyter notebook --ip=0.0.0.0

5.建立自己的隔離環境
pyenv virtualenv 3.4.2 eddy_001
pyenv local eddy_001

5.pymysql模塊
連接數據庫:conn = pymysql.connect(host='192.168.6.229',port=3306,user='mon',passwd='123456',db='pymysql_test',charset='utf8')
獲取操作游標:curs=conn.cursor()
執行sql語句,插入記錄:sta=curs.execute("insert 語句")  執行成功后sta值為1。更新、刪除語句與此類似
執行sql語句,查詢記錄:cur.execute("select語句") 執行成功后cur變量中保存了查詢結果記錄集,然后再用循環打印結果:
for row in curs:
    for col in row:
        print(col.decode('utf-8'), end = ' ')#如果是中文則需要處理編碼
    print()     
關閉數據庫連接: curs.close(); conn.close();

#!/root/.pyenv/shims/python
#-*- coding: utf-8 -*-
#@author: eddy
#@contact: 278298125@qq.com
#@site: http://my.oschina.net/eddylinux

import pymysql

#連接數據庫函數
def connDB():
    conn = pymysql.connect(host='X.X.X.X',port=3306,user='XXX',passwd='XXXXXX',db='XXXXX',charset='utf8')
    curs = conn.cursor()
    return(conn, curs)

#更新語句,可執行update,insert語句
#sta=cur.execute("insert 語句")  執行成功后sta值為1。更新、刪除語句與此類似
def exeUdate(curs,sql):
    sta = curs.execute(sql)
    return(sta)

#刪除語句,可批量刪除
def exeDelete(curs,IDs):
    for eachID in IDs.split(','):
        sta=curs.execute('delete from eddy where id =%d' %int(eachID))
    return(sta)

#查詢語句
def exeQuery(cur,sql):
    curs.execute(sql)
    return (cur)

#關閉所有連接
def connClose(conn,curs):
    curs.close()
    conn.close()

#調用連接數據庫的函數
conn,curs = connDB()

#調用更新記錄的函數
sta = exeUdate(curs,'insert into eddy values(1,"eddy1")')
if sta == 1:
    print('insert successed')
else:
    print('insert failed')

#查詢現有數據,并打印
exeQuery(curs, 'SELECT * FROM eddy')
for row in curs:
    for col in row:
        print(col, end = ' ')
    print()

#批量刪除記錄,用戶輸入要刪除的記錄id號
ID=input('請輸入要刪除的編號,編號之間用逗號分開:');
sta=exeDelete(curs, ID);
if(sta==1):
    print('刪除成功');
else:
    print('刪除失敗');

#關閉數據庫
connClose(conn, curs)

paramiko安裝
pip install paramiko

#!/root/.pyenv/shims/python
#-*- coding: utf-8 -*-
#@author: eddy
#@contact: 278298125@qq.com
#@site: http://my.oschina.net/eddylinux

import paramiko

#設置基本變量主機,端口,用戶名,密碼,命令
HOST = "192.168.6.229"
PORT = 22
USER = "root"
PASSWD = "123456"
CMD = "ifconfig"

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#傳遞基本變量到連接信息中
ssh.connect(HOST,PORT,USER,PASSWD)
#執行命令,并把結果付給變量
stdin,stdout,stderr = ssh.exec_command(CMD)
result = stdout
print("*" * 20 ,"結果","*" * 20)
for i in result:
    print(i, end = ' ')

#上傳、下載
t = paramiko.Transport((HOST,PORT))
t.connect(username=USER,password=PASSWD)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('/tmp/test.py','/tmp/test.py') 
sftp.get('/tmp/check_web.py','/tmp/check_web.py') 

t.close()

CMD = 'ls /tmp/test.py'
stdin,stdout,stderr = ssh.exec_command(CMD)
result = stdout
print("*" * 20 ,"結果","*" * 20)
for i in result:
    print(i, end = ' ')
ssh.close()    
執行結果    
******************** 結果 ********************
eth0      Link encap:Ethernet  HWaddr 00:0C:29:83:AF:C8  
           inet addr:192.168.6.229  Bcast:192.168.6.255  Mask:255.255.255.0
           inet6 addr: fe80::20c:29ff:fe83:afc8/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:96089284 errors:0 dropped:0 overruns:0 frame:0
           TX packets:52108810 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000 
           RX bytes:13832749831 (12.8 GiB)  TX bytes:4450847967 (4.1 GiB)
 
 lo        Link encap:Local Loopback  
           inet addr:127.0.0.1  Mask:255.0.0.0
           inet6 addr: ::1/128 Scope:Host
           UP LOOPBACK RUNNING  MTU:65536  Metric:1
           RX packets:48058661 errors:0 dropped:0 overruns:0 frame:0
           TX packets:48058661 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:0 
           RX bytes:10916592053 (10.1 GiB)  TX bytes:10916592053 (10.1 GiB)
 
 ******************** 結果 ********************
/tmp/test.py

 

 

 本文由用戶 Geo3127 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!