python 3 pyenv版本管理與pymsql、paramiko模塊
來自: 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!