当前位置: 首页 > article >正文

C++加载sqlite3数据库文件

        db数据库文件简单轻便,形式上可以像excel数据那样,但是解析的时候却有很大的灵活性。使用Python解析db数据已经是很简单的事情,使用专门的数据库可视化工具,通过sql语句查询内容也是有手就行,也许C++也不难,但是对我来说这是个新东西,所以这里就先介绍它吧。


创建数据库文件

      创造虚拟数据,还是要借助于Python,Python简直是数据科学的语言。我的流程是先使用Python创建csv文件,然后将csv文件转为db文件。依旧放图:

       

转换前后文件对比:

但是数据信息确是一毛一样。

csv转db数据代码:

import sqlite3
import pandas as pd

# 读取 CSV 文件
csv_file = 'demo.csv'
df = pd.read_csv(csv_file)

# 处理列名,替换特殊字符
def sanitize_column_name(column_name):
    return column_name.replace(':', '_').replace(' ', '_')

# 连接到 SQLite 数据库
db_file = 'demo.db'
conn = sqlite3.connect(db_file)
cursor = conn.cursor()

# 创建表
table_name = 'people'
sanitized_columns = [sanitize_column_name(col) for col in df.columns]
columns = ', '.join(sanitized_columns)
placeholders = ', '.join(['?'] * len(df.columns))
create_table_sql = f'CREATE TABLE IF NOT EXISTS {table_name} ({columns});'
cursor.execute(create_table_sql)

# 插入数据
insert_sql = f'INSERT INTO {table_name} ({columns}) VALUES ({placeholders});'
for row in df.itertuples(index=False, name=None):
    cursor.execute(insert_sql, row)

# 提交事务
conn.commit()

# 关闭连接
conn.close()

print(f"CSV data has been successfully imported into {db_file}")

c++解析数据库

#include <iostream>
#include <sqlite3.h>

int main() {
    sqlite3* db;
    int rc;

    rc = sqlite3_open("F:/pythonProject/demo.db", &db); // 文件路径可以是 ":memory:" 表示内存中的数据库

    if (rc) {
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        return 1;
    }
    else {
        std::cout << "Opened database successfully" << std::endl;
    }


    sqlite3_close(db);
    return 0;
}

 


http://www.kler.cn/news/363208.html

相关文章:

  • Chainlit集成LlamaIndex和Chromadb实现RAG增强生成对话AI应用
  • 互联网摸鱼日报(2024-10-24)
  • css模糊遮罩效果
  • Ivanti云服务被攻击事件深度解析:安全策略构建与未来反思
  • R语言绘图——坐标轴及图例
  • React 分装webSocket
  • TextIn文档解析助力金融信息化企业建设数据底座
  • OpenCV和HALCON
  • Verilog——参数化定义
  • SSM(一对多和多对多)
  • data_table_2 与 flutter 官方 DataTable 的区别
  • 富格林:正确判别欺诈确保安全
  • ros2 action server示例、拓展、练习
  • 【无标题】测试
  • ubuntu启用ssh
  • Codeforces Round 980 (Div. 2) A-C 题解
  • C语言编译过程
  • 【CVPR2025】3 投稿指南和论文模版
  • 大数据查询引擎之Tez
  • MySQL的主从复制配置
  • SpringCloud无介绍快使用,sentinel服务熔断功能与持久化(二十四)
  • 自动创作PPT 利用提示词和大模型自动创建ppt
  • Java第三周:继承和多态,抽象类和接口
  • 基于SSM消防物资存储系统的设计
  • 实验03分支---7-9 真睡还是装睡
  • 构建后端为etcd的CoreDNS的容器集群(四)、etcd挂载私有自签名证书进行访问测试