将CSV导入到导出数据库中

问题描述 投票:0回答:2

我有一个.csv文件,我想导入到PyCharm中并转换/导出为.db文件。我浏览了许多类似的问题和解决方案,但似乎不太了解。可以下载CSV文件here。该文件包含全美国的农贸市场信息。我正在将该文件用于我正在观看的应用程序构建教程。与.db配合使用时,适当地使用.csv优于sqlite3。以下是基于@Marichyasana answer的内容,尽管遇到了“表已存在错误”。我也查看了@Tennessee Leeuwenburg answer,但不了解table_nameconn代表什么。由于简单,我宁愿使用@Tennessee Leeuwenburg答案。我将不胜感激!

import sqlite3, csv

# con = sqlite3.connect(":memory:")
con = sqlite3.connect("market_table.db")
cur = con.cursor()
cur.execute("CREATE TABLE market_table(MarketName STR, Website STR, Facebook STR, Twitter STR, Youtube STR, OtherMedia STR, street STR, city STR, Country STR, State STR, zip STR, "
            "Season1Date STR, Season1Time STR, Season2Date STR, Season2Time STR, Season3Date STR, Season3Time STR, Season4Date STR, Season4Time STR, x STR, y STR, Location STR, "
            "Credit STR, WIC STR, WICcash STR, SFMNP STR, SNAP STR, Organic STR, Bakedgoods STR, Cheese STR, Crafts STR, Flowers STR, Eggs STR, Seafood STR, Herbs STR, Vegetables STR, "
            "Honey STR, Jams STR, Maple STR, Meat STR, Nursery STR, Nuts STR, Plants STR, Poultry STR, Prepared STR, Soap STR, Trees STR, Wine STR, Coffee STR, Beans STR, Fruits STR, "
            "Grains STR, Juices STR, Mushrooms STR, PetFood STR, Tofu STR, WildHarvested STR, updateTime STR, PRIMARY KEY(MarketName))")

with open('C:/Users/zlesl/PycharmProjects/AeroTract_App/Export.csv','r') as market_table:
    dr = csv.DictReader(market_table)
    to_db = [(i['MarketName'], i['Website'], i['Facebook'], i['Twitter'], i['Youtube'], i['OtherMedia'], i['street'],
    i['city'], i['Country'], i['State'], i['zip'], i['Season1Date'], i['Season1Time'], i['Season2Date'], i['Season2Time'],
    i['Season3Date'], i['Season3time'], i['Season4Time'], i['Season4Date'], i['x'], i['y'], i['Location'], i['Credit'],
    i['WIC'], i['WICcash'], i['SFMNP'], i['SNAP'], i['Organic'], i['Bakedgoods'], i['Cheese'], i['Crafts'], i['Flowers'],
    i['Eggs'], i['Seafood'], i['Herbs'], i['Vegetables'], i['Honey'], i['Jams'], i['Maple'], i['Meat'], i['Nursery'],
    i['Nuts'], i['Plants'], i['Poultry'], i['Prepared'], i['Soap'], i['Trees'], i['Wine'], i['Coffee'], i['Beans'],
    i['Fruits'], i['Grains'], i['Juices'], i['Mushrooms'], i['PetFood'], i['Tofu'], i['WildHarvested'], i['updateTime']) for i in dr]

cur.executemany("INSERT INTO market_table VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,"
                "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);", to_db)
con.commit()


    cur.execute("CREATE TABLE market_table(MarketName STR, Website STR, Facebook STR, Twitter STR, Youtube STR, OtherMedia STR, street STR, city STR, Country STR, State STR, zip STR, "
sqlite3.OperationalError: table market_table already exists
python pandas sqlite pycharm
2个回答
1
投票

1)表名将是您要将数据推送到的sql表的名称,conn将是数据库连接

2)Marichyasana答案使用创建表,如果您已经第二次运行表,则第二次运行将无法正常工作,您可以将“创建表”查询替换为“如果不存在,则创建表” check documentation here


0
投票
import pandas as pd
import sqlite3

df = pd.read_csv("C:/location/Export.csv")
conn = sqlite3.connect("markets.db")
df.to_sql("markets", conn, if_exists='append', index=False)
© www.soinside.com 2019 - 2024. All rights reserved.