python读取csv文件存入数据库(python csv读取)
用python提取csv文件内容到数据库
这个脚本可以直接运行,将csv文件放在同级目录即可。
csv第一列需要有列名,如果csv里没有列名,需要在代码中添加列名。
代码运行示例:python insert.py csvname tablename
Python csv模块(读写文件)
CSV文件又称为逗号分隔值文件,是一种通用的、相对简单的文件格式,用以存储表格数据,包括数字或者字符。CSV是电子表格和数据库中最常见的输入、输出文件格式。
通过爬虫将数据抓取的下来,然后把数据保存在文件,或者数据库中,这个过程称为数据的持久化存储。本节介绍Python内置模块CSV的读写操作。
1)csv.writer()
csv模块中的writer类可用于读写序列化的数据,其语法格式如下:
参数说明:
csvfile:必须是支持迭代(Iterator)的对象,可以是文件(file)对象或者列表(list)对象。
dialect:编码风格,默认为excel的风格,也就是使用逗号,分隔。
fmtparam:格式化参数,用来覆盖之前dialect对象指定的编码风格。
如果想同时写入多行数据,需要使用writerrows()方法,代码如下所示:
aggs.csv文件内容:
2)csv.DictWriter()
当然也可使用DictWriter类以字典的形式读写数据,使用示例如下:
name.csv文件内容,如下所示:
1)csv,reader()
csv模块中的reader类和DictReader类用于读取文件中的数据,其中reader()语法格式如下:
2)csv.DictReader()
应用示例如下:
输出结果:
开课吧广场-人才学习交流平台
python如何读取CSV信息存入数据库
class?DBI(object):
????"""database?interface"""
????def?__init__(self,?conn):
????????"""keep?connection"""
????????self._conn?=?conn
????def?store(self,?sql,?data):
????????"""store?data?into?database?with?given?sql"""
????????curr?=?self._conn.cursor()
????????curr.executemany(sql,?data)
????????self._conn.commit()
????????curr.close()
????def?execute(self,?sql,?*args,?**kwgs):
????????"""execute?sql?on?database"""
????????curr?=?self._conn.cursor()
????????curr.execute(sql,?*args,?**kwgs)
????????self._conn.commit()
????????curr.close()
def?ipager(serial,?pagesize):
????"""make?serial?page?by?page"""
????buff?=?[]
????for?row?in?serial:
????????buff.append(row)
????????if?len(buff)?=?pagesize:
????????????send,?buff,?=?buff,?[]
????????????yield?send
????if?len(buff):
????????yield?buff
def?tester():
????import?csv
????import?sqlite3
????
????dbi?=?DBI(sqlite3.connect(database=":memory:"))
????dbi.execute("create?table?tb_tester?(id,?key,?val,?tm)")
????sql="insert?into?tb_tester?values?(?,??,??,??)"
????with?open(todofile,?'rb')?as?handle:
????????for?rows?in?ipager(csv.reader(handle),?512):
????????????dbi.store(sql,?rows)
csv模块是python处理csv类文件的强大工具; 参考
ipager将大数据流按指定大小分页, 以节省资源并提升效率;
DBI提供统一的数据库接口操作方法;