python sqlite3 csv 操作时相关问题总结

一、python sqlite3要删除数据库,无需一个个删表,直接在当前目录下找到*.db文件删除即可:

import os
dbName = 'testDB.db'
if (os.path.exists('./' + dbName)):
    os.remove('./' + dbName)

 

二、python 想把结构化的数据.csv文件直接存到sqlite3数据库,使用python的福利pandas库即可:

import pandas
#csv导入到sqlite中,提供路径和表名
def csv2sqlite(csvPath, csvTableName):
    df = pandas.read_csv(csvPath)
    df.to_sql(csvTableName, self.conn, if_exists='append', index=False)

 

三、python sqlite3数据库表导出为csv文件:

import sqlite3
import pandas
from sqlalchemy import create_engine

dbPath = './testDB.db'
#将现有sqlite3数据库‘*.db’中的tableName表导出到csvDstPath处,格式为.csv,参数为表名和csv目的路径
def sqlite2csv(tableName, csvDstPath):
    # echo = True ,会显示在加载数据库所执行的SQL语句。
    engine = create_engine(r'sqlite:///'+dbPath, echo=True)
    table = pandas.read_sql_table(table_name= tableName, con=engine)
    table.to_csv(csvDstPath)

 

四、sqlite不支持select into from 和 insert into select;select into from 和 insert into select都是用来复制表,两者的主要区别为: select into from 要求目标表不存在,因为在插入时会自动创建。insert into select from 要求目标表存在。

SQLite不支持以上语法,替代的语句是这样:

CREATE TABLE newtable AS SELECT * FROM oldtable

实现sqlite表的复制,其中newtable要求不提前存在,会自动创建。而oldtable可以使用带括号的查询语句代替(select * from xx),如:

CREATE TABLE newtable AS SELECT * FROM (select * from xx)

其中,结尾的xx可以是表名,又可以是各种条件语句(Join...),来实现sqlite按条件查询的结果存到新的表中。

 

五、SQL语句中如何使用含有if....else...判断语句

语法:

case when 条件1 then 结果1 when 条件2 then 结果2 else 结果N end
  • 可以有任意多个条件,如果没有默认的结果,最后的else也可以不写,
select case when col1 > 1 then col2 else col3 end from XXXtable

 

N、配合阅读

用Python进行SQLite数据库操作http://www.cnblogs.com/yuxc/archive/2011/08/18/2143606.html

Engine Configuration: http://docs.sqlalchemy.org/en/latest/core/engines.html

 

sql中把一个查询结果当做一个新表来查询https://blog.csdn.net/wocjj/article/details/7420678

python写入csv文件的几种方法总结:https://blog.csdn.net/waple_0820/article/details/70049953

SQLite与pandas:https://www.cnblogs.com/gaomochen/p/7803873.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值