使用 pandas.to_sql 时如何为我的 table 创建列?

How can I create the columns to my table when using pandas.to_sql?

我正在使用以下代码创建测试 SQL 数据库:

import sqlite3

connection = sqlite3.connect('tv.sqlite')

cursor = connection.cursor()

#Create database
sql_query = """ CREATE TABLE tvshows (
    id integer PRIMARY KEY,
    producer text NOT NULL,
    language text NOT NULL,
    title text NOT NULL
)"""

#Execute the SQL query
cursor.execute(sql_query)

我开始定义 table 列。

但是,我想从我拥有的 CSV 文件中导入一个包含 50k+ 条目的庞大数据库。该 CSV 没有 headers(但即使有,我仍然有同样的问题)。

我在网上找到这段代码:

import pandas
import sqlite3

connection = sqlite3.connect('tv.sqlite')

cursor = connection.cursor()

#Reads csv and converts to sql
df = pandas.read_csv('tvshows_db.csv')
df.to_sql('tv', connection)

这是我得到的:

它是如何在我不设置列名(它使用第一个电视节目条目作为 header 值)及其值(类型、字符限制等)的情况下创建数据库的?我该如何使用 pandas.to_sql?

它假设第一行的值是 headers 并像这样创建它。 您可以在推送到 db:

之前先设置数据帧 headers
df = pandas.read_csv('tvshows_db.csv')
df.columns = ['col1', 'col2']

对于列类型,如果您在第一个代码块中创建了一个 table,您可以在 to_sql() 中将 if_exists 参数设置为 append,它会尊重写入 db

时的列类型
df.to_sql('tv', connection, if_exists='append')