一、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