xml地图|网站地图|网站标签 [设为首页] [加入收藏]

python常用库,python

时间:2020-01-04 21:40来源:计算机
Sqlite3 创建一个Cursor对象用于执行sql命令,要注意sql语句的安全,另外对于execute,executemany和executescript函数可以直接使用Connection对象调用,函数内会自动创建cursor,并返回cursor对象 c=con

Sqlite3

创建一个Cursor对象用于执行sql命令,要注意sql语句的安全,另外对于execute,executemany和executescript函数可以直接使用Connection对象调用,函数内会自动创建cursor,并返回cursor对象

c=conn.cursor()
# Never do this -- insecure! 

symbol = 'RHAT' 

c.execute("SELECT * FROM stocks WHERE symbol = '%s'" % symbol) 

# Do this instead,注意元组中只有一个元素时后面要有逗号
#sql语句中的替换符为? 

t = ('RHAT',) 

c.execute('SELECT * FROM stocks WHERE symbol=?', t) 

print(c.fetchone()) 

# Larger example that inserts many records at a time 

purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00), 

('2006-04-05', 'BUY', 'MSFT', 1000, 72.00), 

('2006-04-06', 'SELL', 'IBM', 500, 53.00), 

] 

c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)

如果使用execute执行完查询语句后,获取数据可以使用如下方法:

  • 将cursor当做一个iterator,使用for语句每次获取一行row数据
  • 使用fetchone(),每次获取一行row数据,最后返回None
  • 使用fetchall(),获取row的list,没有数据则返回None

将sqlite不支持的python类型加到sqlite中,首先要将该类型转换成sqlite支持的类型,通常用str。具体方法有两种:

  • 实现类的__conform__方法 图片 1

    __conform__import sqlite3
    
    class Point:
        def __init__(self, x, y):
            self.x, self.y = x, y
    
        def __conform__(self, protocol):
         #注意protocol
            if protocol is sqlite3.PrepareProtocol:
                return "%f;%f" % (self.x, self.y)
    
    con = sqlite3.connect(":memory:")
    cur = con.cursor()
    
    p = Point(4.0, -3.2)
    cur.execute("select ?", (p,))
    print(cur.fetchone()[0])
    
  • 使用sqlite3.register_adapter为类注册一个adapter方法,将类型转换成str,sqlite3 module内部为python的内置类型datetime.date和datetime.datetime提供了adapter,将它们转换为iso。 图片 2

    adapterimport sqlite3
    import datetime
    import time
    
    def adapt_datetime(ts):
        return time.mktime(ts.timetuple())
    
    sqlite3.register_adapter(datetime.datetime, adapt_datetime)
    con = sqlite3.connect(":memory:")
    cur = con.cursor()
    
    now = datetime.datetime.now()
    cur.execute("select ?", (now,))
    print(cur.fetchone()[0])
    
还可以使用sqlite3.register_converter为类注册一个convert方法,将数据库中的值转换为python类型。为了使sqlite3知道从数据库中查询出的数据的实际类型需要设置sqlite.connect方法的detect_types参数,值有两个:

-   通过declared type(隐式方法)
-   通过列名(显示方法)
    ![](http://www.bkjia.com/uploads/allimg/141031/163950I43-0.gif)

        detect_typeimport sqlite3

        class Point:
            def __init__(self, x, y):
                self.x, self.y = x, y

            def __repr__(self):
                return "(%f;%f)" % (self.x, self.y)

        def adapt_point(point):
            return ("%f;%f" % (point.x, point.y)).encode('ascii')

        def convert_point(s):
            x, y = list(map(float, s.split(b";")))
            return Point(x, y)

        # Register the adapter
        sqlite3.register_adapter(Point, adapt_point)

        # Register the converter
        sqlite3.register_converter("point", convert_point)

        p = Point(4.0, -3.2)

        #########################
        # 1) Using declared types
        con = sqlite3.connect(":memory:", detect_types=sqlite3.PARSE_DECLTYPES)
        cur = con.cursor()
        cur.execute("create table test(p point)")

        cur.execute("insert into test(p) values (?)", (p,))
        cur.execute("select p from test")
        print("with declared types:", cur.fetchone()[0])
        cur.close()
        con.close()

        #######################
        # 1) Using column names
        con = sqlite3.connect(":memory:", detect_types=sqlite3.PARSE_COLNAMES)
        cur = con.cursor()
        cur.execute("create table test(p)")

        cur.execute("insert into test(p) values (?)", (p,))
        cur.execute('select p as "p [point]" from test')
        print("with column names:", cur.fetchone()[0])
        cur.close()
        con.close()

class sqlite3.Row:表示一行数据,可以使用列名或者索引下标访问某列的值

python常用库,python

怎查看安装Python后自带的标准库有多少

win的话在python安装目录里有一个lib目录。
*nix的话,应该在/usr/lib/python2.7  

Python 常用的标准库以及第三方库有什

有一本书,讲的就是Python标准中文库;

要想看哪些第三方库,可以到官网!  

Sqlite3 创建一个Cursor对象用于执行sql命令,要注意sql语句的安全,另外对于execute,executemany和executescript函数可以直接使用...

编辑:计算机 本文来源:python常用库,python

关键词: