问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python 如何创建sqlite和新建表

发布网友 发布时间:2022-04-27 09:26

我来回答

2个回答

懂视网 时间:2022-04-08 02:26

       以下是重要的 sqlite3 模块程序,可以满足您在 Python 程序中使用 SQLite 数据库的需求。如果您需要了解更多细节,请查看 Python sqlite3 模块的官方文档。

序号 API & 描述
1 sqlite3.connect(database [,timeout ,other optional arguments])

该 API 打开一个到 SQLite 数据库文件 database 的链接。您可以使用 ":memory:" 来在 RAM 中打开一个到 database 的数据库连接,而不是在磁盘上打开。如果数据库成功打开,则返回一个连接对象。

当一个数据库被多个连接访问,且其中一个修改了数据库,此时 SQLite 数据库被锁定,直到事务提交。timeout 参数表示连接等待锁定的持续时间,直到发生异常断开连接。timeout 参数默认是 5.0(5 秒)。

如果给定的数据库名称 filename 不存在,则该调用将创建一个数据库。如果您不想在当前目录中创建数据库,那么您可以指定带有路径的文件名,这样您就能在任意地方创建数据库。

2 connection.cursor([cursorClass])

该例程创建一个 cursor,将在 Python 数据库编程中用到。该方法接受一个单一的可选的参数 cursorClass。如果提供了该参数,则它必须是一个扩展自 sqlite3.Cursor 的自定义的 cursor 类。

3 cursor.execute(sql [, optional parameters])

该例程执行一个 SQL 语句。该 SQL 语句可以被参数化(即使用占位符代替 SQL 文本)。sqlite3 模块支持两种类型的占位符:问好和命名占位符(命名样式)。

例如:cursor.execute("insert into people values (?, ?)", (who, age))

4 connection.execute(sql [, optional parameters])

该例程是上面执行的由光标(cursor)对象提供的方法的快捷方式,它通过调用光标(cursor)方法创建了一个中间的光标对象,然后通过给定的参数调用光标的 execute 方法。

5 cursor.executemany(sql, seq_of_parameters)

该例程对 seq_of_parameters 中的所有参数或映射执行一个 SQL 命令。

6 connection.executemany(sql[, parameters])

该例程是一个由调用光标(cursor)方法创建的中间的光标对象的快捷方式,然后通过给定的参数调用光标的 executemany 方法。

7 cursor.executescript(sql_script)

该例程一旦接收到脚本,会执行多个 SQL 语句。它首先执行 COMMIT 语句,然后执行作为参数传入的 SQL 脚本。所有的 SQL 语句应该用分号(;)分隔。

8 connection.executescript(sql_script)

该例程是一个由调用光标(cursor)方法创建的中间的光标对象的快捷方式,然后通过给定的参数调用光标的 executescript 方法。

9 connection.total_changes()

该例程返回自数据库连接打开以来被修改、插入或删除的数据库总行数。

10 connection.commit()

该方法提交当前的食物。如果您未调用该方法,那么自您上一次调用 commit() 以来所做的任何动作对其他数据库连接来说是不可见的。

11 connection.rollback()

该方法回滚自上一次调用 commit() 以来对数据库所做的更改。

12 connection.close()

该方法关闭数据库连接。请注意,这不会自动调用 commit()。如果您之前未调用 commit() 方法,就直接关闭数据库连接,您所做的所有更改将全部丢失!

13 cursor.fetchone()

该方法获取查询结果集中的下一行,返回一个单一的序列,当没有更多可用的数据时,则返回 None。

14 cursor.fetchmany([size=cursor.arraysize])

该方法获取查询结果集中的下一行组,返回一个列表。当没有更多的可用的行时,则返回一个空的列表。该方法尝试获取由 size 参数指定的尽可能多的行。

15 cursor.fetchall()

该例程获取查询结果集中所有(剩余)的行,返回一个列表。当没有可用的行时,则返回一个空的列表。

        Python 的数据库模块有统一的接口标准,所以数据库操作都有统一的模式,基本上都是下面几步(假设数据库模块名为db):

        1)用db.connect创建数据库连接,假设连接对象为conn
        2)如果该数据库操作不需要返回结果,就直接用conn.execute查询,根据数据库事务隔离级别的不同,可能修改数据库需要conn.commit
        3)如果需要返回查询结果则用conn.cursor创建游标对象cur, 通过cur.execute查询数据库,用cur.fetchall/cur.fetchone/cur.fetchmany返回查询结果。根据数据库事 务隔离级别的不同,可能修改数据库需要conn.commit
        4)关闭cur, conn

        下面我们以上面的介绍的步骤来介绍sqlite的使用。

        1)导入sqlite3模块,如:

>>> import sqlite3
        2)创建数据库/打开数据库

        创建或打开数据,如下:

>>> import sqlite3 as sqlite
>>> conn = sqlite.connect("D:/test.db")

上面的命令打开D:/test.db的数据库文件,如果指定的数据库存在就直接打开这个数据库,如果不存在就新创建一个再打开,并返回数据库连接对象conn,该对象主要有以下操作:

  • commit(): 事务提交 
  • rollback(): 事务回滚 
  • close(): 关闭一个数据库连接 
  • cursor(): 创建一个游标 
  • connect的完整形式如:

    connect(database[, timeout, isolation_level, detect_types, factory])
           其中,commit()方法用于提交事务,rollback()方法用于回滚至上次调用commit()方法的地方。可以通过Connection.isolation_level定义事务隔离级别,当该属性设置成None时,它会自动提交事务,不需要显式地调用commit()方法。

            除了直接指定数据库文件之外,还有一种方法是在内存中创建数据库。方法是将":memory:"作为参数传递给sqlite.connect()函数:

    conn = sqlite3.connect(":memory:")
          如果不需要返回结果,则可以直接使用conn.execute( )进行数据操作,如下,创建一个数据库表user:

    conn.execute("create table user(uid int primary key not null, name text not null, password text not null, age int)")
          如果需要返回结果,则继续看下面的游标对象。

          3)创建游标对象

    >>> cur = conn.cursor()
           游标对象有以下的操作:

  • execute()--执行sql语句
  • executemany--执行多条sql语句   
  • close()--关闭游标  
  • fetchone()--从结果中取一条记录,并将游标指向下一条记录   
  • fetchmany()--从结果中取多条记录   
  • fetchall()--从结果中取出所有记录   
  •        如进行插入操作:
    >>> cur.execute("insert into user(uid,name, password,age)values(1,'John','123',12)")
    <sqlite3.Cursor object at 0x02A8A0A0>
    >>> cur.execute("insert into user(uid,name, password,age)values(2,'Kate','123',12)")
       现在查询看下刚才插入的数据:
    >>> cur.execute("select* from user")
    <sqlite3.Cursor object at 0x02A8A0A0>
    >>> print(cur.fetchone())
    (1, u'John', u'123', 12)
    >>> print(cur.fetchall())
    [(2, u'Kate', u'123', 12)]
    >>> print(cur.fetchall())
    []
    >>> cur.execute("select* from user")
    <sqlite3.Cursor object at 0x02A8A0A0>
    >>> print(cur.fetchall())
    [(1, u'John', u'123', 12), (2, u'Kate', u'123', 12)]
    >>> 
          从上面的代码可以看到,采用fetchone( )每次取出一条数据,并且指向下一个数据,而fetchall( )取出所有的数据,并指向末尾。当然,还有修改操作:
    >>> cur.execute("update user set age =15 where uid =1")
    <sqlite3.Cursor object at 0x02A8A0A0>
    >>> cur.execute("select* from user where uid =1")
    <sqlite3.Cursor object at 0x02A8A0A0>
    >>> print(cur.fetchall())
    [(1, u'John', u'123', 15)]
    >>> 
    删除操作:
    >>> cur.execute("delete from user where uid =1")
    <sqlite3.Cursor object at 0x02A8A0A0>
    >>> 
          除了上面显示的cur=conn.curson()创建右边对象对象外,其实可以直接conn.ececute( )返回的游标对象,如:
    >>> cur = conn.execute("select* from user")
    >>> print(cur.fetchall())
    [(1, u'test', u'124', 16)]
    >>> 
           游标对象取多多条记录fetchmany( ):
    >>> cur = conn.execute("select* from user")
    >>> print(cur.fetchmany(3))
    [(1, u'test', u'124', 16), (2, u'test2', u'124', 18), (3, u'test3', u'124', 20)]
    >>> 
           下面,我们将Python中的sqlite操作封装成一个类,如下:
    class sqlitehelper:
     def __init__(self, db):
     self.db = db
     try:
      self.conn = sqlite.connect(db)
      self.cur = self.conn.cursor()
     except sqlite.Error,e:
      print("connect "+db+" failed:"+e.reason)
      return  
     def __del__(self):
     self.conn.close()
    
     def execute(self,sql):
     self.cur.execute(sql)
     return self.cur
    
     def select(self, sql):
     self.cur.execute(sql)
     return self.cur
    
     def insert(self, sql):
     self.cur.execute(sql)
     return self.cur
    
     def delete(self, sql):
     self.cur.execute(sql)
     return self.cur
    
     def update(self, sql):
     self.cur.execute(sql)
     return self.cur

    参考资料:

    1、python之sqlite3使用详解  

    2、sqlite3 — DB-API 2.0 interface for SQLite databases

    3、Python sqlite3 模块 API

    Python中sqlite学习教程

    标签:pysqlite

    热心网友 时间:2022-04-07 23:34

    import sqlite3
    cx = sqlite3.connect("E:/test.db")
    cx.execute("create table ...")#建表
    cx.execute("insert into ...")#插入数据
    cx.commit()

    追问创建之后怎么插入数据呢?从哪里输?

    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    母爱作文(围绕一句话来写)900字 月经期能喝冰糖沙梨水? 石家庄火车站骗钱 五等分的新娘手游汉化安卓游戏官方下载 昆明看守所那个看守所好在 成建军行政拘留 青岛贵捷充换电设备成套服务有限公司怎么样? 合肥贵捷商贸有限责任公司怎么样? 南京贵捷物资有限公司怎么样? 上海贵捷电气有限公司产品用途 京东在客户不知道的情况下开通铂金会员怎么取消 蟑螂有多大 南方的蟑螂有多大的啊?现在安庆,见了个30mm 的东西不知道是不是蟑螂,好恐怖 安徽省凤阳县为什么没有蟑螂? 从小到大从来没有见过蟑螂 我家是安徽阜阳的是南方和北方中间吧 我们家乡安徽阜阳这边为什么没有蟑螂呢? 请问天天梦见坟墓和死人是怎么回事?有时还会梦见佛像。天天就像活在梦... 什么软件可以收听外国新闻 梦到自己拉着死人找坟墓 一直找不到,那有的坟墓竟是空的,但又不能放那里面。 哪些新闻软件有比较多的国外新闻? 梦到死人坟墓是空的里面还有小鸟 下载什么软件软件可以看外媒新闻 什么软件可看全国外国新闻影视剧 哪款笔记本值得推荐?5000左右。 5000元左右现在买什么笔记本电脑好?要求办公用,轻薄 有没有什么五千元左右,适合运行办公软件的笔记本电脑? 有没有什么推荐的笔记本电脑,办公游戏都行的,预算5000左右? 5000多块钱,能买什么笔记本电脑,可以办公了? 朋友们,现在成都新都中央空调维修清洗电话是多少? 求推荐5000元左右的办公笔记本? 搭建python djingo 必须要建的数据库表 python 创建数据库 出错。 python中我想用SQLAlchemy操作models.py在数据库创建表和字段 python sqlite数据库 建表定义的时候有8列,插入数据时想先插入前5个... 想要把锅包肉做得又酥又脆,需要掌握哪些小窍门儿? 怎样做锅包肉又酥又脆 锅包肉怎么做才酥脆 锅包肉的家常做法有哪些 锅包肉怎样做的又脆又酥 炸锅包肉怎么能酥脆 微信公众平台如何发高质量图文 锅包肉怎么做才酥脆 锅包肉怎样做才能又酥又脆 梦见自己在天上飞后又从高空中摔下来 怎样做锅包肉才最酥脆 微信公众平台怎样发图文消息 锅包肉怎么做酥脆好吃 梦见在天上飞又轻轻的落下来 东北老师傅教你锅包肉怎么做更酥脆? 锅包肉怎么做才酥脆 锅包肉怎么才能做的脆 锅包肉怎么做脆