example conectar con python sql ms-access ms-access-2013 pyodbc

conectar - python connect access



Trabajando con fechas en Access usando pyodbc dando el error "Muy pocos parĂ¡metros" (1)

A

  1. ahórrese la molestia de encontrar el delimitador de fecha aplicable, y
  2. promover una buena práctica de codificación

simplemente deberías usar una consulta parametrizada como esta:

db = pyodbc.connect(connStr) crsr = db.cursor() sql = """ SELECT DISTINCT Date_ FROM Closing_prices WHERE Date_ >= ? AND Date_ < ? """ params = (datetime.date(2011, 8, 10), datetime.date(2014, 4, 30)) crsr.execute(sql, params)

Estoy usando Python con una importación pyodbc.

Estoy usando Microsoft Office 2013 de 64 bits.

Estoy intentando consultar una base de datos accdb para seleccionar fechas distintas dentro de un rango y asignarlas a un cursor para luego poder agregarlas a una lista.

Mi base de datos Access tiene una tabla llamada Closing_prices y una columna llamada Date_, que tiene el tipo de datos "Fecha / Hora".

Mi código es el siguiente:

cursor=conx.cursor() query="select distinct Date_ FROM Closing_prices where Date_ >= ''10/8/2011'' and Date_ < ''30/04/2014''" cursor.execute(query) dates=list() for date in cursor: dates.append(date[0])

Sin embargo, estoy recibiendo el mensaje de error:

Traceback (most recent call last): File "C:/Users/Stuart/PycharmProjects/untitled/Apache - Copy.py", line 20, in <module> cursor.execute(query) pyodbc.Error: (''07002'', ''[07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. (-3010) (SQLExecDirectW)'')

Como Date_ es una fecha y hora, también he intentado:

query="select distinct Date_ FROM Closing_prices where Date_ >= ''10/8/2011 00:00:00'' and Date_ < ''30/04/2014 00:00:00''"

Cuando corro:

cursor = conx.cursor() query="select Date_ FROM Closing_prices" cursor.execute(query) for row in cursor: print row print type(row[0])

Obtengo el siguiente resultado como un ejemplo:

(datetime.datetime(2014, 3, 24, 0, 0), ) (datetime.datetime(2014, 3, 25, 0, 0), ) (datetime.datetime(2014, 3, 26, 0, 0), ) (datetime.datetime(2014, 3, 27, 0, 0), )

Soy relativamente nuevo en Python e incluso más nuevo en las consultas SQL, por lo que alguien podría indicarme dónde me estoy equivocando, y quizás cómo puedo cambiar mi código para ayudarme a agregar las distintas fechas en una lista como lo desee.

Muchas gracias.