1

SQL構文エラーが発生し続けました。日ごとにデータを取得するために、ここで何が欠けていますか。

これが私のPythonエラーです:

pyodbc.ProgrammingError: ('42000', "[42000] [MySQL][ODBC 5.1 Driver][mysqld-5.1.63rel13.4-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s and date_created < %s ,(start, next)' at line 11 (1064) (SQLExecDirectW)")
File "d:\sasdev\datax\program\py\global.py", line 33, in <module>
  """)

コードは次のとおりです。

start = datetime.date(2012,01,01)
next = start + datetime.date.resolution

while next <= datetime.date.today():
     print start, next 

     cur_ca.execute("""
             select id,
         date_created,
         data
         from bureau_inquiry where date_created >= %s and date_created < %s %(start, next)
         """)
     start = next
     next = start + datetime.date.resolution  
4

1 に答える 1

6

フォーマットパラメータを使用してクエリを実行しますが、これらを渡さないでください。% (start, next)パーツはSQLクエリのに出ます:

cur_ca.execute("""
         select id,
     date_created,
     data
     from bureau_inquiry where date_created >= %s and date_created < %s
     """ % (start, next)
   )

ただし、SQLパラメータを使用する方がよいので、データベースはクエリを準備し、クエリプランを再利用できます。

cur_ca.execute("""
         select id,
     date_created,
     data
     from bureau_inquiry where date_created >= ? and date_created < ?
     """, (start, next)
   )

PyODBCは?SQLパラメータに使用します。

于 2012-09-21T18:10:39.587 に答える