zoukankan      html  css  js  c++  java
  • SQLite

      SQLite是一个小型的关系型数据库,最大的特点是不需要单独的服务、零配置。Python的标准库中自带了SQLite数据库相应的驱动模块了。安装了Python,就可以直接使用SQLite数据库。
    建立数据库连接对象

    >>> import sqlite3    # 导入sqlite3模块
    >>> conn = sqlite3.connect('mydb')    # 创建数据库连接对象

      通过上面的方式就创建了数据库的连接对象了,在sqlite3.connect('mydb')中,如果数据库mydb已经存在,就连接上它;如果不存在,则会自动创建一个并连接。注意,这里的路径是随意指定的。

    建立游标对象
      和MySQL类似,建立了数据库连接后,还要建立游标对象,通过游标对象操作数据库

    >>> cur = conn.cursor()    # 创建游标对象

    通过游标对象操作数据库
      操作方法和MySQL类似。

    # 创建数据表
    >>> create_table = "create table stu(id int auto_increment primary key, name char(8) not null, class char(8) default null)"    # 创建数据库
    >>> cur.execute(create_table)
    <sqlite3.Cursor object at 0x10fae3b90>
    >>> conn.commit()    # 执行提交
    # 执行数据插入
    >>> sql = "insert into stu(id, name, class) values(1, '张三', 'python3')"
    >>> cur.execute(sql)
    <sqlite3.Cursor object at 0x10fae3b90>
    >>> conn.commit()
    # 执行数据查询
    >>> sql = "select * from stu"
    >>> cur.execute(sql)
    <sqlite3.Cursor object at 0x10fae3b90>
    >>> cur.fetchall()    # 取出所有数据
    [(1, '张三', 'python3')]    # 以列表的形式返回
    >>> cur.fetchall()
    []
    >>> sql = "select * from stu where class='python3'"
    >>> cur.execute(sql)
    <sqlite3.Cursor object at 0x10fae3b90>
    >>> cur.fetchone()    # 一条一条的取出数据
    (1, '张三', 'python3')
    >>> cur.fetchone()
    (2, '李四', 'python3')
    # 执行数据更新
    >>> sql = "update stu set name='张三2' where id=1"    # 数据更新
    >>> cur.execute(sql)
    <sqlite3.Cursor object at 0x10fae3b90>
    >>> sql = "select * from stu"
    >>> cur.execute(sql)
    <sqlite3.Cursor object at 0x10fae3b90>
    >>> cur.fetchall()
    [(1, '张三2', 'python3'), (2, '李四', 'python3'), (3, '王舞', 'python4')]
    # 执行数据删除
    >>> sql = "delete from stu where id=3"    # 删除数据
    >>> cur.execute(sql)
    <sqlite3.Cursor object at 0x10fae3b90>
    
    # 执行提交
    >>> conn.commit()    # 事务提交,每执行一次数据库更改的操作,就执行提交
    
    # 执行数据库关闭
    >>> cur.close()
    >>> conn.close()

    SQLite中的占位符
      SQLite中的占位符和Python中有区别,是以?作为占位符。

    >>> data = [(3, '王舞', 'python4'), (4, '曲奇', 'python5'), (5, '语言', 'python5')] #批量数据放入列表
    >>> sql = "insert into stu(id, name, class) values(?, ?, ?)"    # ?作为占位符
    >>> cur.executemany(sql, data)    # 执行批量插入
    <sqlite3.Cursor object at 0x10fae3f10>
    >>> conn.commit()

    更多操作访问:https://docs.python.org/3.5/library/sqlite3.html

  • 相关阅读:
    P1001 A+B Problem
    NOIP2015D1T2 信息传递
    海淀区赛游记。。。。
    P3375 【模板】KMP字符串匹配
    Print Article HDU
    BZOJ-2-4870: [Shoi2017]组合数问题 矩阵优化 DP
    BZOJ-1- 4868: [Shoi2017]期末考试-三分
    #6164. 「美团 CodeM 初赛 Round A」数列互质-莫队
    湖南大学第十四届ACM程序设计新生杯(重现赛)
    Codeforces Round #530 (Div. 2)
  • 原文地址:https://www.cnblogs.com/wgbo/p/10112265.html
Copyright © 2011-2022 走看看