我有一个.csv
文件,我想导入到PyCharm中并转换/导出为.db
文件。我浏览了许多类似的问题和解决方案,但似乎不太了解。可以下载CSV文件here。该文件包含全美国的农贸市场信息。我正在将该文件用于我正在观看的应用程序构建教程。与.db
配合使用时,适当地使用.csv
优于sqlite3
。以下是基于@Marichyasana answer的内容,尽管遇到了“表已存在错误”。我也查看了@Tennessee Leeuwenburg answer,但不了解table_name
和conn
代表什么。由于简单,我宁愿使用@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
1)表名将是您要将数据推送到的sql表的名称,conn将是数据库连接
2)Marichyasana答案使用创建表,如果您已经第二次运行表,则第二次运行将无法正常工作,您可以将“创建表”查询替换为“如果不存在,则创建表” check documentation here
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)