質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1154閲覧

jupyterのdatabaseエラーを直したい!

mahc

総合スコア33

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/01/27 01:13

編集2020/01/27 01:51

前提・実現したいこと

エラーを直したい!

発生している問題・エラーメッセージ

ProgrammingError: (1064, "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 'between 2000-01-01 00:00:00 and 2000-01-01 00:30:00) and ### = 1 and ##' at line 1") During handling of the above exception, another exception occurred: DatabaseError: Execution failed on sql : (1064, "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)

該当のソースコード

Python3

1import numpy as np 2import pandas as pd 3import pandas.io.sql as psql 4import matplotlib.pyplot as plt 5import seaborn as sns 6import sqlalchemy as sa 7import datetime 8import pickle 9import os 10import const 11from pandas.io import sql 12from sklearn.externals import joblib 13from more_itertools import chunked 14from more_itertools import collapse 15from sqlalchemy import create_engine 16from sklearn.ensemble import RandomForestRegressor 17from sklearn.model_selection import train_test_split 18from sklearn.metrics import r2_score 19from sklearn.metrics import mean_squared_error 20date_format = '%Y-%m-%d %H:%M:%S' 21from sshtunnel import SSHTunnelForwarder 22import MySQLdb 23(中略) 24df = pd.DataFrame() 25for index, row in df_hoge.iterrows(): 26 if index > 5: 27 break 28 29 str_start_time = row['start'].strftime(date_format) 30 str_end_time = row['end'].strftime(date_format) 31 print(str_start_time) 32 print(str_end_time) 33 34 str_sql = 'select ### as hogehoge, ### as hogehoge2, ### as hogehoge3, ### as hogehoge4 from ### where ### (between ' + str_start_time +' and '+ str_end_time +') and ### = 1 and ### = 0 and ### > 0 order by ###'; 35 df_tmp = psql.read_sql(str_sql,cnn) 36

試したこと

str_sqlの+str_start_time+と+str_end_time+でエラーが起こってるのは分かったのですが対処法がわかりません.
また,パース文字で上記二つを置き換えても駄目だったので,上の方法で試しています.

補足情報(FW/ツールのバージョンなど)

str_start_timeとstr_end_timeがsql文で指示が出せればどんな解決方法でもいいです.
よろしくお願いいたします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tetsunosuke

2020/01/27 01:30

### ってのはそのまま書いてあるのでしょうか? 見る限り、between の使い方を理解していないと思われます。 between 条件1 and 条件2 というのがひとつの塊なので、 (between 条件1 and 条件2) and 条件3 and 条件4 のようなSQLが実行されるのが正しいように見えますが不確かなので###について確認です。
mahc

2020/01/27 01:34

teratailに書き写す際に抜け落ちたようです,こちらの間違いです. tetsunosuke様のおっしゃる通りです.
tetsunosuke

2020/01/27 01:37 編集

> おっしゃる通り そうでしたか。 解決しそうですか? 解決しないようであれば、質問ならびに発生している問題・エラーメッセー を修正して状況をアップデートしてもらえればと思います。
mahc

2020/01/27 01:37

了解です.
tetsunosuke

2020/01/27 01:39

あとは見た感じ、 and 2000-01-01 00:30:00 が and '2000-01-01 00:30:00' になればとりあえず解決しそうに思います。(もしくは文字列を時刻型に明示的に変換する)
guest

回答1

0

自己解決

()
を外してパース文字で書き,パースの抜き出し部分を()でくくるとできました!

投稿2020/01/27 04:56

mahc

総合スコア33

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問