python笔记
2016年04月23日

sqlite3数据转移

    import sqlite3
    import StringIO
    #使用:memory:标识打开的是内存数据库
    con = sqlite3.connect(":memory:")
    cur = con.cursor()
    #使用executescript可以执行多个脚本
    cur.executescript("""
        create table quotes(
            rid INTEGER PRIMARY KEY AUTOINCREMENT,
            code char(10) NOT NULL,
            high real,
            open real,
            low real,
            close real,
            amount real,
            volume real)
        """)
    #execute执行脚本,参数要放到元组中
    cur.execute('insert into quotes(code,high,open,low,close,amount,volume) values(?,?,?,?,?,?,?)',
                ('600036',12.0,11.8,11.7,11.9,999999,8999))
    #打印数据表数据
    cur.execute("select * from quotes")
    print cur.fetchall()
    #生成内存数据库脚本
    str_buffer = StringIO.StringIO()
    #con.itrdump() dump all sqls
    for line in con.iterdump():
        str_buffer.write('%s\n' % line)
    #关闭内存数据库
    cur.close()
     
    #打开文件数据库
    con_file = sqlite3.connect('quotes.db3')
    cur_file = con_file.cursor()
    #执行内存数据库脚本
    cur_file.executescript(str_buffer.getvalue())
    #关闭文件数据库
    cur_file.close()

web服务器

    import os
    from http.server import HTTPServer,CGIHTTPRequestHandler
    port=8080
    httpd=HTTPServer(('',port),CGIHTTPRequestHandler)
    print("Starting simple_httpd on port:"+str(httpd.server_port))
    httpd.serve_forever()

这个web服务器功能很简单,只负响应web请求
需要注意:

  1. 脚本所在目录必须包含cgi-bin目录,并且所有python脚本需要放在里边,否则脚本会被原样输出到浏览器上
  2. 需要调用的其他web脚本需要具有执行权限
  3. 脚本第一行要明确指明脚本使用python#!/usr/bin/python
  4. web脚本需要输出头信息
    print("Content-type:text/html\n\n")
    print("<h1>test</h1>")

有关web输出的时候,最好写上Content-type:xxx/xxx
如果没有,浏览器可能会根据扩展名进行识别,但浏览器可能会把输出内容的第一行当作content-type
所以,如果不写content-type的话,第一行要空出来 “\nxxxxx”

画图

可以使用pillow类库进行画图