Spark-08

python
------------
    脚本语句。
    /usr/bin/python            //2.7.5

使用缩进格式
---------------

数据结构
-------------
    1.list,类似于Array,可变
        [1,2,3,4]
    2.tuple,元组,不可变
        t = (1,2,3,2,4)
    3.dict,字典,类似于map,可变
        d = {key:valyue,....}
        
    d[key]
    lst[2:4]            //

文件操作
--------------
    import os            //模块,就是文件
    open();

python访问mysql
------------------
    0.注意
        目前最高只支持python3.4版本。
        需要降级。
    1.安装mysql

    2.安装mysql的python模块
        
#
import MySQLdb
db = MySQLdb.connect("localhost","root","root","python")
cur = db.cursor()
#执行sql
cur.execute("select version()");
data = cur.fetchone()
print data
db.close()

安装python3.4 + mysql
-------------------------
    1.安装python3.4(不能高于该版本,mysql不支持)
        
    2.安装mysql模块
        2.1)下载PyMySQL-0.7.11.zip
        2.2)解压
        2.3)进入解压目录,执行命令
            cmd>python setup.py install
        2.4)查看是否在python安装下有该模块对应文件
            C:\myprograms\python3.4\Lib\site-packages\PyMySQL-0.7.11-py3.4.egg
        
    3.重启idea,重新加载模块(包含mysql模块)
    4.编写python程序
        import pymysql
        try:
            conn = pymysql.connect(host='localhost', user='root', passwd='root', db='python', port=3306, charset='utf8')
            cur = conn.cursor()
            cur.execute('select version()')
            version = cur.fetchone()
            print(version)
            cur.close()
            conn.close()
        except  Exception:
            print("发生异常")

# -*- encoding=utf-8 -*-

import pymysql

# try:
#     #开启连接
#     conn = pymysql.connect(host='localhost', user='root', passwd='root', db='python', port=3306, charset='utf8')
#     #打开游标
#     cur = conn.cursor()
#     #执行sql
#     i = 0 ;
#     while i < 10000 :
#         sql = "insert into t1(name,age) values('%s',%d)" % ("tom" + str(i),i % 100);
#         print(sql) ;
#         cur.execute(sql)
#         i += 1 ;
#     conn.commit()
#     #
#     cur.close()
#     conn.close()
#
# except Exception:
#     print("发生异常")

# '''
#   执行事务管理,手动提交事务,回滚事务。
# '''
# conn = pymysql.connect(host='localhost', user='root', passwd='root', db='python', port=3306, charset='utf8')
# try:
#     #关闭自动提交
#     conn.autocommit(False)
#     #开始事务
#     conn.begin()
#     #打开游标
#     cur = conn.cursor();
#     sql = "delete from t1 where id > 130000"
#     cur.execute(sql)
#     conn.commit()
#     cur.close
#
# except Exception:
#     conn.rollback()
# finally:
#     conn.close()

# '''
#     执行update.
# '''
# conn = pymysql.connect(host='localhost', user='root', passwd='root', db='python', port=3306, charset='utf8')
# try:
#     #关闭自动提交
#     conn.autocommit(False)
#     #开始事务
#     conn.begin()
#     #打开游标
#     cur = conn.cursor();
#     sql = "update t1 set age = age - 1 where age >= 50"
#     cur.execute(sql)
#     conn.commit()
#     cur.close
#
# except Exception:
#     conn.rollback()
# finally:
#     conn.close()

#
#
# '''
#     聚合查询,统计
# '''
# conn = pymysql.connect(host='localhost', user='root', passwd='root', db='python', port=3306, charset='utf8')
# try:
#     # 关闭自动提交
#     conn.autocommit(False)
#     # 开始事务
#     conn.begin()
#     # 打开游标
#     cur = conn.cursor();
#     sql = "select count(*) from t1 where age < 20"
#     cur.execute(sql)
#     res = cur.fetchone()
#     print(res[0])
#     conn.commit()
#     cur.close
#
# except Exception:
#     conn.rollback()
# finally:
#     conn.close()

#
#    调用mysql数据中的函数
#
# conn = pymysql.connect(host='localhost', user='root', passwd='root', db='python', port=3306, charset='utf8')
# try:
#     # 关闭自动提交
#     conn.autocommit(False)
#     # 开始事务
#     conn.begin()
#     # 打开游标
#     cur = conn.cursor();
#     sql = "select mydb2.sf_add(1,2)"
#     cur.execute(sql)
#     res = cur.fetchone()
#     print(res[0])
#     conn.commit()
#     cur.close
#
# except Exception:
#     conn.rollback()
# finally:
#     conn.close()

#
#    调用mysql数据中的存储过程
#
conn = pymysql.connect(host='localhost', user='root', passwd='root', db='mydb2', port=3306, charset='utf8')
try:
    # 关闭自动提交
    conn.autocommit(False)
    # 开始事务
    conn.begin()
    # 打开游标
    cur = conn.cursor();
    sql = "call sp_batchinsert(100000)"
    cur.execute(sql)
    conn.commit()
    cur.close
    print("ok!!!")
except Exception:
    conn.rollback()
    print("挂了!!")
finally:
    conn.close()


处理时间问题
-----------------
    print(tname + " : " + str(i))
    import sys
    import os
    //提取秒,精确到微秒.
    cc = int(time.time() * 1000)        //转换成毫秒.
    print(cc)


进程内部并发执行的代码段。
多线程
---------------
    #导入线程模块
    import _thread

    #定义函数
    def hello():
        #获得当前线程的名字
        tname = threading.current_thread().getName()
        for i in [1,2,3,4,5,6,7,8,9]:
            print(tname + " : " + str(i))
            import sys
            import os
            cc = int(time.time() * 1000)
            print(cc)
    #启动新线程
    _thread.start_new_thread(hello,())


    #切记主线程需要休眠一段时间,否则分线程效果看不到。
    import time ;
    time.sleep(3)

多线程编程
--------------------------
# -*- encoding=utf-8 -*-
import threading

tickets = 100 ;

loc = threading.Lock()

def getTicket():
    global loc ;
    loc.acquire()
    global tickets
    tmp = 0 ;
    if tickets > 0 :
        tmp = tickets ;
        tickets -= 1 ;
    else:
        tmp = 0 ;
    loc.release()
    return tmp ;


class Saler(threading.Thread):
    def run(self):
        while True:
            tick = getTicket();
            if tick != 0:
                print(self.getName() + " : " + str(tick))
            else:
                return ;


s1 = Saler()
s1.setName("s1")

s2 = Saler()
s2.setName("s2")

s1.start()
s2.start()

python的import指令
----------------------
    from OOPDemo import Dog
    Dog(..)
    
    import OOPDemo
    OOPDemo.Dog(...)

Socket:编程
-----------------
    [TCP]
        ServerSocket/Socket
        socket = socket.socket(...)
        socket.bind(("localhost",8888))
        socket.listen(0)
        socket.accept();

        socket = socket.connect((...));
        bytes
        socket.send(bytes)
    

    [UDP]
        UserDatagramSocket


--------------------------------
    [UDP发送方]
    # -*- encoding=utf-8 -*-
    import socket

    #创建socket对象SOCK_DGRAM表示udp协议。
    sender = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sender.bind(("localhost",9999))
    print("启动了udp发送者")
    index = 0 ;
    while True:
        msg = "hello" + str(index) ;
        msgBytes = msg.encode("utf-8");
        sender.sendto(msgBytes,("localhost",8888))
        print("发送了 : " + msg)
        index += 1 ;
        import time
        time.sleep(1)


    [UDP接收方]
    # -*- encoding=utf-8 -*-
    import socket

    #创建socket对象SOCK_DGRAM表示udp协议。
    recver = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    recver.bind(("localhost",8888))
    print("启动了udp接受者")
    while True:
        (data,addr) = recver.recvfrom(1024)
        msg = bytes.decode(data);

        print("接收了 from " + str(addr[0]) +":" + str(addr[1]) + " : " + msg)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值