Python之sqlite3

描述Python的数据库模块有统一的接口标准,所以数据库操作都有统一的模式(假设数据库模块名为db):1.用db.connect创建数据库连接,假设连接对象为conn2.如果该数据库操作不需

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

Python sqlite3数据库是一款非常小巧的内置模块,它使用一个文件存储整个数据库,操作十分方便,相比其他大型数据库来说,确实有些差距。但是在性能表现上并不逊色,麻雀虽小,五脏俱全,sqlite3实现了多少sql-92标准,比如说transaction、trigger和复杂的查询等。

描述

  Python的数据库模块有统一的接口标准,所以数据库操作都有统一的模式(假设数据库模块名为db):

  1. 用db.connect创建数据库连接,假设连接对象为conn

  2. 如果该数据库操作不需要返回结果,就直接使用conn.execute查询,根据数据库事物隔离级别的不同,可能修改数据库需要conn.commit

  3. 如果需要返回查询结果则用conn.cursor创建游标对象cur,通过cur.execute查询数据库,cursor方法有fetchall、fetchone、fetchmany返回查询结果,根据数据库事物隔离级别不同,可能修改数据库需要coon.commit

  4. 关闭cur.close

sqlite3基本操作用例

#coding=utf-8

import sqlite3

conn = sqlite3.connect("sqlite.db")  #创建sqlite.db数据库
print ("open database success")
conn.execute("drop table IF EXISTS student")
query = """create table IF NOT EXISTS student(
    customer VARCHAR(20),
    produce VARCHAR(40),
    amount FLOAT,
    date DATE   
);"""
conn.execute(query)
print ("Table created successfully")

#在表中插入数据

''' 方法1 '''
#data = '''INSERT INTO student(customer,produce,amount,date)\
#    VALUES("zhangsan","notepad",999,"2017-01-02")'''
#conn.execute(data)
#data = '''INSERT INTO student(customer,produce,amount,date)\
#    VALUES("lishi","binder",3.45,"2017-04-05")'''
#conn.execute(data)
#conn.commit()

''' 方法2 '''
statement = "INSERT INTO student VALUES(?,?,?,?)"
data = [("zhangsan","notepad",999,"2017-01-02"),("lishi","binder",3.45,"2017-04-05")]
conn.executemany(statement, data)
conn.commit()

curson = conn.execute("select * from student")
conn.commit()
print (curson)
rows = curson.fetchall()
print (rows)
conn.close()

sqlite3 csv->db->csv

'''将csv数据导入数据库'''
import sys
import csv
import sqlite3

#解析csv文件
def parsecsvFile(filepath):
    header = None
    data = []
    with open(filepath, 'r') as csvfile:
        filereader = csv.reader(csvfile)
        header = next(filereader)
        #print (header)
        for row in filereader:
            data.append(row)
        #print (data)
    return header,data

#使用sqlite3写数据库
def initdb(header, data):
    conn = sqlite3.connect("sqlite.db")
    print ("connect database success")
    conn.execute("drop table IF EXISTS student")
    conn.commit()
    query = '''create table IF NOT EXISTS student(\
        Supplier Name VARCHAR(32),
        Invoice Number VARCHAR(16),
        Part Number VARCHAR(16),
        Cost VARCHAR(16),
        Purchase Date DATE);'''
    conn.execute(query)
    conn.commit() 
    statement = "INSERT INTO student VALUES(?,?,?,?,?)"
    conn.executemany(statement, data)
    conn.commit()
    curson = conn.execute("select * from student")
    conn.commit()
    print (curson)
    rows = curson.fetchall()
    print (rows)
    conn.close()
    return rows

#根据数据库内容写csv文件
def wirtecsvfile(writefilepath, header, data):
    with open(writefilepath, 'a+') as writefile:
        writer = csv.writer(writefile, delimiter=",")
        writer.writerow(header)
        for row in data:
            writer.writerow(row)
    
if __name__ == "__main__":
    readfilepath = sys.argv[1]
    writefilepath = sys.argv[2]
    header,data = parsecsvFile(readfilepath)
    rows = initdb(header, data)
    wirtecsvfile(writefilepath, header, rows)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120206.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 软件测试入门基础_软件测试如何自学

    软件测试入门基础_软件测试如何自学电商项目实战-用例设计系列参考书籍:《电商后台系统产品逻辑全解析》一、电商模式其中大家接触最多的就是B2C。电商模式名词解释不做过多讲解。电商模式二:电商后台管理系统。重点给大家分享订单中心、支付中心、促销中心的用例设计思路。电商后台管理系统【1】促销形式…………

    2022年9月25日
    1
  • ubuntu命令chmod755

    ubuntu命令chmod755使用方式:在终端切换到文件目录输入chmod775hello.py这样就将hello.py变成了可执行文件当然作为python文件还需要再开头加上#!/usr/bin/envpython用于适应linux环境。chmod是Linux下设置文件权限的命令,后面的数字表示不同用户或用户组的权限。一般是三个数字:第一个数字表示文件所有者的权限第二个数字表示与文…

    2022年7月16日
    37
  • linux杀掉mysql进程_linux杀死pid进程

    linux杀掉mysql进程_linux杀死pid进程使用“ps-e|grepmysql”命令,查看mysql程序的对应的pid号。使用“kill-9进程号”命令,可以结束掉mysqld_safe进程。使用”killallmysqld”命令,可以杀掉所有已mysqld命名的进程。…

    2022年9月1日
    4
  • 一个Django项目:搭建基本自动化运维平台[通俗易懂]

    一个Django项目:搭建基本自动化运维平台[通俗易懂]之前做的一个Python项目,采用了Django的MTV框架搭建,实现的是主机的CMDB平台与作业平台基本功能。基本的搭建步骤:1.确定平台的基本功能有哪些:实现主机的自动添加,删除,修改;实现所管理主机配置信息的监控;实现指定对象的批量管理2.根据上面的功能,设计对应的页面方式,布局,规划如何交互的。:如何执行命令与显示3.根据上面的规划,拟定需要怎样的架构,分别需要几个模块(M…

    2022年5月13日
    52
  • C#桌面文案小工具 ,详细带解说图(带源码)

    C#桌面文案小工具 ,详细带解说图(带源码)新手!新手!新手!有什么不对的地方可以交流交流最近无聊,写了一个小工具,每隔一段时间随机刷新一下文案,并且还可以连接数据库思路:1窗体的隐藏:在属性上面把BackCoor和TransprencyKey设置成一样的就可以隐藏窗口了2日期时间的刷新:在窗体上创建一个label标签,这个没什么好说,直接获取时间然后创建一个计时器一直刷新他,频率设置成1—900都可以,代码记得写在计时器label2.Text=DateTime.Now.ToString();//20

    2022年5月18日
    50
  • 报错:warning: large integer implicitly truncated to unsigned type [-Woverflow]

    报错:warning: large integer implicitly truncated to unsigned type [-Woverflow]函数声明:voidpri_hex(constBYTE*buf,BYTElen,constchar*pname);按照如下方式调用时,报错。pri_hex(buff,READ_NUM,"buff");报错内容如标题。其中READ_NUM是一个宏定义。#defineREAD_NUM1024很明显,是调用函数时,输入的参数,超出函数定义的参数的范围。修改为如…

    2022年7月25日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号