【发布时间】:2018-02-01 08:59:51
【问题描述】:
这是 MS Access database,它包含一个表。我想将它读入DataFrame。这里的问题是什么时候 使用“WHERE”会导致 pyodbc.Error: ('07002', '[07002] [Microsoft][ODBC Microsoft Access Driver] 参数太少。预期 1. (-3010) (SQLExecDirectW)
import pyodbc #conda install -c anaconda pyodbc
import pandas as pd
import os
db_path=os.path.realpath("test01.accdb")
conn_str = (
r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};"
f"DBQ={db_path};"
)
#sql_str='''SELECT Table1.* FROM Table1''' # << this one works
sql_str='''SELECT Table1.* FROM Table1 WHERE (((Table1.Column01)="DDD"))''' # << this one doesn't work
with pyodbc.connect(conn_str) as conn:
df=pd.read_sql(sql_str, conn)
print(df.head())
数据库:
Column01 Column02
AAA BBB
CCC DDD
УУУ ГГГ
【问题讨论】:
-
我认为它不会改变任何东西,但您可以尝试不带括号的相同查询:
sql_str='SELECT Table1.* FROM Table1 WHERE Table1.Column01="DDD"'
标签: python sql pandas ms-access pyodbc