python - pysqlite 从 csv 文件中获取列名
问题描述
我有一个 csv 文件,我正在尝试将数据加载到 pysqlite 数据库中。我无法找到一种方法来提取文件的第一行并将其作为表的列标题自动输入数据库。我必须在代码本身中“手动”输入名称,这对于 1-2 列是可以的,但是对于数十或数百列来说变得很麻烦。这是我的代码:
import sqlite3
import csv
f_n = 'test_data_1.csv'
f = open( f_n , 'r' )
csv_reader = csv.reader(f)
header = next( csv_reader )
sqlite_file = 'survey_test_db.sqlite'
table_name01 = 'test_survey_1'
field_01 = 'analyst_name'
field_type_01 = 'text'
field_02 = 'question_name'
field_type_02 = 'text'
conn = sqlite3.connect( sqlite_file )
c = conn.cursor()
c.execute('CREATE TABLE {tn}({nf_01} {ft_01},{nf_02} {ft_02})'\
.format(tn = table_name01 , nf_01 = field_01 , ft_01 = field_type_01, nf_02 = field_02 , ft_02 = field_type_02 ))
for row in csv_reader:
c.execute("INSERT INTO test_survey_1 VALUES (?,?)",row)
f.close()
for row in c.execute('SELECT * FROM test_survey_1'):
print(row)
conn.commit()
conn.close()
解决方案
您可以使用pandas
将 csv 文件读入DataFrame
,然后将其导出到sqlite
.
import sqlite3
import pandas as pd
sqlite_file = 'survey_test_db.sqlite'
table_name01 = 'test_survey_1'
conn = sqlite3.connect(sqlite_file)
pd.read_csv('test_data_1.csv').to_sql(table_name01, con=con)
推荐阅读
- python - 预处理后更新单词的字符索引
- java - 在 R.layout.activity_super_admin 上膨胀类 com.google.android.material.bottomnavigation.BottomNavigationView 时出错
- java - 父子关系的 JPA/Hibernate 映射
- python - 无法让 CNN 进行多类分类。抛出“logits 和标签必须具有相同的形状”
- javascript - foreach 仅适用于重复中的最后一个元素
- mysql - 在 ado 记录集中设置变量 - VBA
- javascript - 通过遍历数组来响应更改的元素文本
- pentaho - Pentaho Kettle 刷新 mondrian 缓存
- javascript - 在用户脚本中运行 XMLHttpRequest 时,“无法添加 CORS 标头 'Origin'”
- node.js - Node.js 服务器中的安全漏洞