Reputation: 1
conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=D:/flame/meysam.accdb;')
cursor_2 = conn.cursor()
cursor_2.execute('''
INSERT INTO normal (data_norm_x1, data_norm_x2, data_norm_x3,data_norm_t1,data_norm_t2,data_norm_t3,data_norm_d1,data_norm_d2,data_norm_d3)
VALUES(norm_x1, norm_x2,norm_x3,norm_t1,norm_t2,norm_t3,norm_d1,norm_d2,norm_d3)
''')
conn.commit()
Upvotes: 0
Views: 1626
Reputation: 107587
Simply pass your Python values into SQL using parameters. Remember SQL is a special purpose that is layered in a general purpose language like Python. The two layers do not naturally talk to each others' environments so we must pass in or receive data by interfacing with a DB-API like pyodbc
.
Specifically, Access SQL does not know what the 9 norm variables you use in VALUES
clause. Consequently, it errs out on missing parameters. So pass parameters accordingly to ?
placeholders.
# PREPARED STATEMENT WITH Q MARK PLACEHOLDERS
sql = """INSERT INTO normal (data_norm_x1, data_norm_x2, data_norm_x3,
data_norm_t1, data_norm_t2, data_norm_t3,
data_norm_d1, data_norm_d2, data_norm_d3)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
"""
# RUN ACTION QUERY AND BIND TUPLE OF PARAMS TO SQL
cursor_2.execute(sql, (norm_x1, norm_x2, norm_x3,
norm_t1, norm_t2, norm_t3,
norm_d1, norm_d2, norm_d3)
)
conn.commit()
Upvotes: 2
Reputation: 20302
This is how I do it.
# insert data into 2 fields in a table
import pyodbc
conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\\your_path\\Test.accdb;')
cursor = conn.cursor()
cursor.execute(''' INSERT INTO Table1 (ID, Initials)
VALUES(1, 'RMS') ''')
conn.commit()
Upvotes: 0