Python:读取 csv 文件并插入到 PostgreSQL 数据库

news/2024/7/9 20:27:50 标签: python, postgresql

目录

一、读取 csv 文件

二、创建数据库链接

三、读取 csv 数据并插入到数据库


一、读取 csv 文件

Python:使用 csv 模块读写 csv 文件

二、创建数据库链接

python"># -*- coding: utf-8 -*-

import sqlalchemy
import sqlalchemy.orm as orm
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Record(Base):
    __tablename__ = 'files'

    id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True, autoincrement=True)
    name = sqlalchemy.Column(sqlalchemy.String(256), nullable=True)
    size = sqlalchemy.Column(sqlalchemy.BigInteger, nullable=True)
    path = sqlalchemy.Column(sqlalchemy.String(256), nullable=True)
    mtime = sqlalchemy.Column(sqlalchemy.DateTime, nullable=True)

    def __init__(self, filename, filesize, filepath, filemt):
        '''
        "名称","大小","路径","修改时间"
        '''
        self.name = filename
        self.size = int(filesize)
        self.path = filepath
        self.mtime = filemt

def get_session():
    engine = sqlalchemy.create_engine ("postgresql://postgres:064f0901-c561-44b9-a4bb-a893d23cc505@127.0.0.1/dogdb")
    metadata = sqlalchemy.schema.MetaData(bind=engine)
    Base.metadata.create_all(engine)
    Sess = orm.sessionmaker(bind=engine)
    session = Sess()

    return session

三、读取 csv 数据并插入到数据库

python">def store_to_db(filename):
    session = get_session() # 使用 get_session() 函数获取 session

    with open(filename, 'r') as f:
        reader = csv.reader(f)
        header_row = next(reader)
        cnt = 0;
        for line in reader:
            record = Record(line[0], line[1], line[2], line[3])
            try:
                session.add(record)
                cnt += 1
                if cnt % 1000 == 0:
                    session.commit()
            except sqlalchemy.exc.PendingRollbackError:
                session.rollback()
                session.add(record)
            except Exception as e:
                print(e)
                break
    session.commit()
    session.close()


if "__main__" == __name__:
    filename = sys.argv[1]
    store_to_db(filename)

运行脚本:

$ python insert-files.py files.csv

查看数据库中的数据:

[select id,name,mtime from files order by id]
 id |       name        |        mtime        
----+-------------------+---------------------
  1 | Security.evtx     | 2021-02-24 07:23:48
  2 | MRT.exe           | 2017-12-24 21:45:48
  3 | MRT-KB890830.exe  | 2017-12-24 21:45:50
  4 | NvCplSetupInt.exe | 2016-09-12 21:15:30
  5 | SOFTWARE          | 2021-02-20 09:31:27
  6 | SOFTWARE          | 2021-02-21 01:32:16
  7 | SRUDB.dat         | 2021-02-24 21:20:00
  8 | RCORES64.dat      | 2020-04-08 04:44:38
  9 | RCORES64.dat      | 2015-08-04 00:21:58
 10 | BootCKCL.etl      | 2021-02-20 09:33:51
(10 rows)

 


http://www.niftyadmin.cn/n/788652.html

相关文章

OneAlert 入门(二)——事件分析

OneAlert 是国内首个 SaaS 模式的云告警平台,集成国内外主流监控/支撑系统,实现一个平台上集中处理所有 IT 事件,提升 IT 可靠性。有了 OneAlert,你可以更快更合理地为事件划分优先级、分配路径,从而极大地提高团队的协…

curl 添加 HTTP 基础认证信息

# --user 和 -u 等价 $ curl -u username:password http://www.abc.com# 如果没有制定密码,那就动态需要手动输入密码 $ curl -u username http://www.abc.com Enter host password for user username:

ldgjoyan

rspcmouotlxosawoyxgyuoad 转载于:https://www.cnblogs.com/blfshiye/p/5151923.html

Nginx:添加 HTTP 基础认证信息

目录 一、Nginx 配置项 1.1)使用 ngx_http_auth_basic_module 模块进行配置 1.2)配置存储用户和密码的文件 二、配置 Nginx 三、user_file 的内容 四、测试 五、重启 Nginx 生效 一、Nginx 配置项 1.1)使用 ngx_http_auth_basic_modul…

删除字符串头部的空白字符

#include <stdio.h> #include <string.h>//删除字符串头部的空白字符。 int main() {char code[]" hello World"; //int lensizeof(code);char buf[16];int count0;int i0;for(i0;i<len;i){if(code[i] ){ cont…

eclipse使用手册

– Jdk,eclipse都是64 缺少jre 复制jre 到eclipse目录

Nginx:CentOS7安装 htpasswd 并对明文密码进行加密

一、查看 htpasswd 所在的软件包 $ whereis htpasswd # 查看 htpasswd 命令的位置 htpasswd: /usr/bin/htpasswd /usr/share/man/man1/htpasswd.1.gz$ rpm -qf /usr/bin/htpasswd # 查看 htpasswd 命令所在的软件包 httpd-tools-2.4.37-30.module_el8.3.056197fdbbcc.x86_64 …

Logstash与Kafka集成

[sizemedium] 在ELKK的架构中&#xff0c;各个框架的角色分工如下&#xff1a; ElasticSearch1.7.2&#xff1a;数据存储全文检索聚合计算服务端 Logstasch2.2.2&#xff1a;日志收集与分发推送 Kafka0.9.0.0&#xff1a;分布式高可靠消息队列数据中转存储&#xff08;失效期默…