使用python 3将.csv文件导入sqlite3时遇到问题

时间:2019-04-29 16:44:00

标签: python-3.x csv sqlite executemany

我尝试过this,但无法使其正常工作。我最初在文档的utf解码方面遇到问题,因此我添加了errors ='ignore part。现在,我遇到了sqlite3语法错误。我拥有与列相同的占位符数量(我知道有很多列。我试图将它们全部放入数据库中,以便更轻松地以有意义的方式将其中一些列放在一起)< / p>

这是我的代码。

import csv, sqlite3

con = sqlite3.connect("4x4orce.db")
cur = con.cursor()
cur.execute("""CREATE TABLE t (Premier Part Number, Long Description, External Long Description, Upc, USA, Item, 
Availability, Canada Item Availability, Core Charge, Customer Price, Jobber, MAP, Retail, Inventory Status, Brand, 
Mfg Part Number, UT whse, KY whse, TX whse, CA whse, WA whse, ImageURL, ShipsLTL, ItemWithCores, Cust CAD Price, 
Proposition 65 Carcinogen, Proposition 65 Reproductive Harm)""")  # use your column names here

with open('python/4x4orce/premier_data_feed_4x4orce.csv', 'r', errors='ignore') as fin:
    # `with` statement available in 2.5+
    # csv.DictReader uses first line in file for column headings by default
    dr = csv.DictReader(fin)  # comma is default delimiter
    to_db = [(i['Premier Part Number'], i['Long Description'], i['External Long Description'], i['Upc'],
            i['USA Item Availability'], i['Canada Item Availability'], i['Core Charge'], i['Customer Price'],
            i['Jobber'], i['MAP'], i['Retail'], i['Inventory Status'], i['Brand'], i['Mfg Part Number'], i['UT whse'],
            i['KY whse'], i['TX whse'], i['CA whse'], i['WA whse'], i['ImageURL'], i['ShipsLTL'], i['ItemWithCores'],
            i['Customer CAD Price'], i['Proposition 65 Carcinogen'], i['Proposition 65 Reproductive Harm']) for i in dr]

cur.executemany("""INSERT INTO t (Premier Part Number, Long Description, External Long Description, Upc, USA, Item, 
                Availability, Canada Item Availability, Core Charge, Customer Price, Jobber, MAP, Retail, 
                Inventory Status, Brand, Mfg Part Number, UT whse, KY whse, TX whse, CA whse, WA whse, ImageURL, 
                ShipsLTL, ItemWithCores, Cust CAD Price, Proposition 65 Carcinogen, Proposition 65 Reproductive Harm) 
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""", to_db)
con.commit()
con.close()

这是我遇到的错误:

Traceback (most recent call last):
  File "/Users/mwhites/programming/python/4x4orce/ImportCSV.py", line 8, in <module>
    Proposition 65 Carcinogen, Proposition 65 Reproductive Harm)""")  # use your column names here
sqlite3.OperationalError: near "65": syntax error

Process finished with exit code 1

我在这里做什么错了?

0 个答案:

没有答案