sqlite.OperationalError: рядом с ".": синтаксическая ошибка - PullRequest
0 голосов
/ 02 августа 2020

Я работаю над этим как над заданием, но столкнулся с этой ошибкой. Код выглядит следующим образом:

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

Я не уверен, что здесь не так. Да, я также знаю, что для функции даны 3 аргумента, когда она принимает только 2. Если кто-нибудь может помочь, мы будем очень признательны!

1 Ответ

0 голосов
/ 02 августа 2020

попробуйте вместо этого использовать форматирование строки

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

для целочисленных типов удалить ''

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...