美文网首页野生技术宅协会程序员Python 运维
使用sqlite3 模块操作sqlite3数据库

使用sqlite3 模块操作sqlite3数据库

作者: 乐百川 | 来源:发表于2017-04-02 20:15 被阅读39次

    Python内置了sqlite3模块,可以操作流行的嵌入式数据库sqlite3。如果看了我前面的使用 pymysql 操作MySQL数据库这篇文章就更简单了。因为它们都遵循PEP 249,所以操作方法几乎相同。

    废话就不多说了,直接看代码吧。代码都差不多,首先导入模块,然后建立连接,然后获取游标对象,之后利用游标对象执行SQL语句并获取结果。由于SQL参数需要以元组形式传入,所以下面的代码你会看到('name',)这样的,这是一个元素的元组形式。

    import sqlite3
    
    db_file = 'test.db'
    
    create_table_sql = '''\
    CREATE TABLE test(
    name VARCHAR(255) PRIMARY KEY ,
    value VARCHAR(255) NOT NULL 
    )
    '''
    
    insert_table_sql = """\
    INSERT INTO test VALUES(?,?)  
    """
    
    query_table_sql = """\
    SELECT *
    FROM test WHERE `name`=?
    """
    
    delete_table_sql = """\
    DROP TABLE test
    """
    
    print('--------------sqlite3--------------')
    print(f'version:{sqlite3.version}')
    print(f'sqlite_version:{sqlite3.sqlite_version}')
    
    with sqlite3.connect(db_file) as connection:
        try:
            cursor = connection.cursor()
            cursor.execute(create_table_sql)
    
            cursor.execute(insert_table_sql, ('name', 'yitian'))
            cursor.execute(insert_table_sql, ('count', '100'))
    
            cursor.execute(query_table_sql, ('name',))
            name = cursor.fetchone()
            print(name)
            cursor.execute(query_table_sql, ('count',))
            count = cursor.fetchone()
            print(count)
    
            cursor.execute(delete_table_sql)
    
        finally:
            cursor.close()
    
    

    下面说说sqlitePyMySQL模块之间的不同点吧。首先sqlite3是一个嵌入式数据库,所以数据库文件就是一个db文件,在上面的代码中,如果第一次执行就会发现在当前文件夹下多了一个test.db文件,这就是嵌入式数据库文件。如果我们把数据保存到内存中,程序结束后就消失,那么使用:memory:作为数据库名称。

    另一个不同点就是SQL参数的占位符了,sqlite3的占位符是?,而PyMySQL的占位符是%s。在使用的时候需要确定具体的数据库文档,查看它的占位符到底是什么。

    相关文章

      网友评论

        本文标题:使用sqlite3 模块操作sqlite3数据库

        本文链接:https://www.haomeiwen.com/subject/lbggottx.html