python】【Python】python3连接sqlite3内存数据库问题如何解决

2020-12-22 09:47发布

用python3创建了一个守护进程,然后在守护进程里创建了基于内存的sqlite3数据库。想再创建一个脚本或进程对这个驻留内存的数据库进行连接、读写操作。想了2个途径:1、用脚本或进程连接内存数据库,...

用python3创建了一个守护进程,然后在守护进程里创建了基于内存的sqlite3数据库。
想再创建一个脚本或进程对这个驻留内存的数据库进行连接、读写操作。
想了2个途径:
1、用脚本或进程连接内存数据库,进行操作。但是总是连接不成功。
2、在守护进程的提供可供读写的操作接口,但是不会写。

求解答

2条回答
卡卡
1楼 · 2020-12-28 09:54.采纳回答

import sqlite3

p = sqlite3.connect("file:memDB1?mode=memory&cache=shared", uri=True)
p.execute('CREATE TABLE tbTest (fld1, fld2)')
p.execute("INSERT INTO tbTest VALUES ('fld1', 'fld2')")
p.commit()
list(p.execute('select * from tbTest '))

q = sqlite3.connect("file:memDB1?mode=memory&cache=shared", uri=True)
q.execute("INSERT INTO tbTest VALUES ('fld3', 'fld4')")
q.commit()

list(q.execute('select * from tbTest '))

执行结果:


ann
2楼 · 2021-01-04 15:01





本文介绍一下在python中如何使用sqlite数据库。

Sqlite是C语言编写的轻量级的内存数据库,意味访问速度是比较快的,通常的linux系统都是自带该数据库的。由于sqlite的轻量小巧,因此在学习以及一些访问不是那么频繁,通常一个网站每天的点击次数小于10W(甚至100W)次,采用sqlite是完全能够保证稳定运行的,这个时候就可以采用sqlite。很多的语言都提供直接访问sqlite的接口,可以直接使用,python也不例外。python原生提供了对于sqlite的访问支持,因此在安装python环境之后,不需要额外安装其他模块。

对于数据库的操作无外乎增删改查几种方式,示例代码如下:

#encoding:utf-8

importjson

importos

importsys


importsqlite3



defcreateSqlite3Table(createSqlcmd):

conn=sqlite3.connect('db.sqlite3')

c=conn.cursor()


c.execute(createSqlcmd)


conn.commit()

conn.close()


definsertDataToSqlite3Table(data,insertSqlcmd):


conn=sqlite3.connect('db.sqlite3')

c=conn.cursor()

c.executemany(insertSqlcmd,data)

conn.commit()

conn.close()

print('sqlinsertdatasucc')



defreadSqlite3Table(selectSqlcmd):

conn=sqlite3.connect('db.sqlite3')

c=conn.cursor()

c.execute(selectSqlcmd)

data=c.fetchall()

conn.commit()

conn.close()

returndata

#printc.fetchall()


if__name__=='__main__':



createSqlCmd='''CREATETABLEIFNOTEXISTSUSERS

(IDBIGINTNOTNULLprimarykey,

NAMETEXT,

AGEINT);'''


createSqlite3Table(createSqlCmd)


data=[[1,'tom','20'],[2,'peter','25'],[3,'lily','21']]



insertSqlcmd='INSERTINTOusersVALUES(?,?,?)'


insertDataToSqlite3Table(data,insertSqlcmd)


selectSqlcmd='select*fromuserslimit20'


print(readSqlite3Table(selectSqlcmd))




对于sqlite的操作API都封装在sqlite3中,因此需要引入importsqlite3。

1,createSqlite3Table为数据库创建操作,createSqlCmd为数据库创建命令。

2,insertDataToSqlite3Table为数据库插入操作,data为要插入的数据,是一个二维列表,insertSqlcmd为数据库插入命令,可以单个插入也可以批量插入。

3,readSqlite3Table为数据库查询操作,selectSqlcmd为查询命令。

db.sqlite3为数据库名称,没有该数据库,会在数据库创建命令执行的时候先创建数据库,即在当前文件下生成db.sqlite3这样一个数据库文件。将该文件直接拷贝,就可以在其他机器上使用该数据库,跨平台还是很方便的。

可以看到整体的使用还是非常的简单,只要按照需求写好相应的SQL命令,就可以使用上述几个函数完成相关的数据库操作。想要了解pythonslqite更多的API接口,参考官方文档,这里。

本文为村中少年原创文章,转载记得加上原创出处,博主链接这里。


相关问题推荐

  • 回答 1

    可以试下在cmd命令行执行,编辑器中对turtle的支持度不是很好。

  • 回答 6

    人工智能是一门起步晚却发展快速的科学。20 世纪以来科学工作者们不断寻求着赋予机器人类智慧的方法。现代人工智能这一概念是从英国科学家图灵的寻求智能机发展而来,直到1937年图灵发表的论文《理想自动机》给人工智能下了严格的数学定义,现实世界中实际要...

  • 回答 7

    代理ip网址http://www.goubanjia.com/http://www.ip181.com/https://www.kuaidaili.com/python 环境安装requests库安装bs4库proxies设置代理服务器地址proxies = {'http':  'http://61.155.164.110:3128'}http://www.goub......

  • 回答 2

    要求:用户正确输入用户名和密码便成功登陆,分别有三次机会输入用户名和密码,超过3次便锁定分析:用两个while循环即可,代码如下:user_name = Brettpassword = 1314i = 0n = 0Is_exit = False  #进入循环标志while not Is_exit:User_name = input(please ...

  • 回答 2

    MacOS设置环境变量path的完全总结  一、MacOS加载bash shell 环境变量的加载顺序   mac 一般使用bash作为默认shell,Mac系统的环境变量,加载顺序为:1、系统级别的/etc/profile                                              ...

  • 回答 4

    当你运行代码的时候,需要你指定闹钟的时间,然后闹钟就会在指定的时间想起来。电脑pytho加载time模块,获取此时此刻的时间:import timet = time.localtime()print(t)时间是以字典的形式出现的。从字典里面提取时间信息:now = time.strftime(%H %M, t).spli...

  • 回答 5

    在几千条数据中有正负数,筛选出同一供应商下正负数相加为零的数据,正负数相加有可能为一正一负相加为零,也有可能是一正多负,也有可能一负多正,总体是将可以所有正负数相加为零的数据标注颜色出来。excel论坛上说计算量太 ...可以用pandas来处理...

  • 回答 13

    Java企业级解决方案较多且成熟,国内搜索网站上对于各种问题的解答较多,相比而言,Python成熟企业级解决方案没Java多,资料多以外文为主。国内web开发大环境一直以Java为主,从业者人口基数众多,小白学习Java无论是书籍还是视频资料一搜一大把,从业者技术...

  • 回答 27

    当然可以了,不只是可以处理表格,而且是非常高效的额处理表格,能大大减轻工作量学会使用Python处理表格的话之前接了一个国企的case,说让我们给出一个解决方案关于数据处理方面的,去了他们天津的公司,一个部门7个人,7个人的工作我看了一下,我和我的同事...

  • 回答 22

    1、兼职处理数据2、兼职查询资料3、兼职P图

  • 回答 26

       Python是一门编程语言。相比于其他编程语言, Python爬取网页文档的接口更简洁;Python的urlib2包提供了完整的访问网页文档的API ;并且python中有优秀的第三方包可以高效实现网页抓取,可用极短的代码完成网页的标签过滤功能。所以Python被很多人称为爬虫。...

  • 回答 17

    可以的,python语法简单。刚开始学习可以试一下

  • 回答 25

    这两个其实现在用的都很普遍,java可能更好用一些吧

  • 回答 19

    1.if 语句1)基本用法:if 要判断的条件:    条件成立的时候,要做的事情else:    条件不成立的时候,要做的事情 if和else语句以及各自的缩进部分都是一个完整的代码块示例:2)if ,elifif 要判断的条件:    条件成立的时候,要做的事情elif 条件2...

  • 回答 26

    首先,从应用领域来看,Python语言涉及范围广,应用路径宽。其中包括:  (1)Web和Internet开发  (2)科学计算和统计  (3)人工智能  (4)桌面界面开发  (5)软件开发  (6)后端开发  (7)网络爬虫...

没有解决我的问题,去提问