【问题标题】:sqlite.OperationalError: near ".": syntax errorsqlite.OperationalError:靠近“。”:语法错误
【发布时间】:2020-11-22 18:17:17
【问题描述】:

我正在将此作为一项任务进行处理,但我遇到了这个错误。代码如下:

import pandas as pd

Customers = pd.read_csv (r'/content/customers.csv')  
dfc = pd.DataFrame(data=Customers, columns= ['CustomerID','CustomerName','ContactNo'])

Orders = pd.read_csv (r'/content/orders.csv')
dfo = pd.DataFrame(data=Orders, columns= ['OrderID','CustomerID','OrderDate'])

OrderDetails = pd.read_csv (r'/content/order_details.csv')
dfd = pd.DataFrame(data=OrderDetails, columns= ['OrderID','ProductID','Quantity'])

Products = pd.read_csv (r'/content/products.csv')
dfp = pd.DataFrame(data=Products, columns= ['ProductID','ProductName','UnitPrice'])

# Connect to SQL Server
cursor = connection.cursor()

# Insert DataFrame to Tables
for row in dfc.itertuples():
    cursor.execute('''
                INSERT INTO business.db.Customer (CustomerID, CustomerName, ContactNo)
                VALUES (?,?,?)
                ''',
                (row.CustomerID, 
                row.CustomerName,
                row.ContactNo)
                )
    
for row in dfo.itertuples():
    cursor.execute('''
                INSERT INTO business.db.Order (OrderID,CustomerID,OrderDate)
                VALUES (?,?,?)
                ''',
                (row.OrderID, 
                row.CustomerID,
                row.OrderDate)
                )
    
for row in dfp.itertuples():
    cursor.execute('''
                INSERT INTO business.db.Product (ProductID,ProductName,UnitPrice)
                VALUES (?,?,?)
                ''',
                (row.ProductID, 
                row.ProductName,
                row.UnitPrice)
                ) 
    
for row in dfd.itertuples():
    cursor.execute('''
                INSERT INTO business.db.OrderDetails (OrderID,ProductID,Quantity)
                VALUES (?,?,?)
                ''',
                (row.OrderID, 
                row.ProductID,
                row.Quantity)
                )
    
connection.commit()

当我在 Google Colaboratory 上运行代码时,我收到如下错误消息:

OperationalError                          Traceback (most recent call last)
<ipython-input-36-1726ecf71e09> in <module>()
     40                 (row.CustomerID, 
     41                 row.CustomerName,
---> 42                 row.ContactNo)
     43                 )
     44 

OperationalError: near ".": syntax error

我不确定这里出了什么问题。是的,我也知道该函数只接受 2 个参数时给出了 3 个参数。如果有人能提供帮助,将不胜感激!

【问题讨论】:

  • 也许真正的问题是表名business.db.Customer。如果这是 sqlite,则需要将带有特殊字符的表名包含在某些东西中,例如引号 " sqlite 仅在案例附加数据库(或临时数据库)中使用 db 名称前缀;即使business.db 是附加数据库,由于.s 需要将整个短语括起来

标签: python pandas sqlite dataframe csv


【解决方案1】:

尝试改用字符串格式

(f'''INSERT INTO business.db.Customer (CustomerID, CustomerName, ContactNo) 
   VALUES ('{row.CustomerID}','{row.CustomerName}','{row.ContactNo}')''')

对于整数类型删除''

【讨论】:

    猜你喜欢
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    相关资源
    最近更新 更多