問題タブ [mysql-connector-python]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
204 参照

python - SQL ステートメントの引数が参照によって渡されるときに、mysql-connector が最初に eof 行を返すのはなぜですか?

関数の呼び出し時に関数内の SQL ステートメントの引数が渡されると、mysql-connector は最初に eof を返し、次に「columns」行を返します。これにより、最初に eof 行を処理することで空の結果が表示されます。

次のコードは機能し、行を返します。ただし、関数を呼び出して値を渡すときに data = ('ABC','XYZ') を data = (symbol,exchangetr) に置き換えると、コードは機能せず、空のタプルが返されます。

コードをデバッグすると、関数を呼び出して引数を渡すと、次のものが MYSQL サーバーから返されることがわかりました。

しかし、データ変数をハードコーディングして引数を直接渡すと、MYSQL サーバーから次のようになります。

最初に EOF 行を処理すると、mysql-connector は誤ってゼロ行が表示されます。私は python の初心者で、mysql-connector にいくつかの微妙な問題があるようです。私のコードの問題は何ですか? 外部から SQL ステートメントに引数を渡すことはできませんか? 助けてください。

0 投票する
1 に答える
68 参照

python - MySQL/Python -- コミットされた変更がループに表示されない

MySQL Connector/Python を使用して、2 秒ごとに値の変更をチェックし続けるループがあります。すべての肉を除いたループは次のとおりです (プリントはテスト目的でそこにあります:

get_row は単純な選択クエリであり、namedtuple fetchall を返します (したがって、末尾の [0] は 1 行のみになります)。

問題は、初期値を取得すると、変更してもその値を返し続けることです。たとえば、開始が「0」の場合、管理者に移動して変更しても、新しいターミナルを開いて変更してコミットしても、「0」を出力し続けます。query_cache_size を 0 に設定しようとしましたが、まだうまくいきません。コミットの問題だと思っていましたが、そうでもありませんでした。変更して再接続すると、変更が表示されますが、プログラム中に変更されない理由がわかりません。何かご意見は?

編集:それが発生した場合に備えて、はい、カーソルを閉じて、呼び出しごとに新しいカーソルを取得しています。

0 投票する
1 に答える
5610 参照

python - Python 2.7 の mysql.connector でパラメーター化されたクエリを使用する

mysql.connectorpyCharmで実行してPython 2.7を使用しています

ここここに示すようなパラメーター化されたクエリを使用する必要があります

これらの例を考えるとcursor.execute("SELECT * FROM automatedReports WHERE pythonFunctionName = %s", (function_name))、以下のように動作するはずです。

ただし、pyCharm でこの行を記述すると、次のエラーが発生します。

ここにコードを入力してください

検査は次のように述べています。

ここに画像の説明を入力

コードを実行すると、次のエラーが発生します。

SQL 構文にエラーがあります。1 行目の '%s' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

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

ここで何が間違っていますか?これは古い構文ですか?私はそうは思わないでしょう...

クエリ文字列に値を入力すると、すべて正常に機能しますが、パラメーターを使用できないことに注意してください。

0 投票する
2 に答える
120 参照

python - mysql python モジュールを使用して SQL テーブルを更新する

Python 用の mysql コネクタを使用して、SQL テーブル内の 1 つのセル内の 1 つの値を更新しようとしています。次のコードを使用すると、エラー メッセージは表示されませんが、テーブルが実際に更新されることもありません。更新しようとしているセルの値は、空の場合もあれば、NULL の場合もあり、文字列が含まれている場合もあります。これが私のコードです:

私は何を間違っていますか?

編集:これまでの返信に感謝します。さまざまなクエリで同様のコードを効果的に実行しているため、周囲のコードに機能上の問題はないと思います (SQL インジェクションに対する脆弱性を除き、ここと他の場所で修正しました)。ここに私のコードがあります:

関連がある場合は、挿入しようとしているセルが VARCHAR(45) としてフォーマットされていることがわかります。セルで SELECT クエリを実行すると、次のような形式の名前が返されます: (u'James',)

change_to_value = "(u'James',)" と設定すると、次のエラー メッセージが表示されます。

mysql.connector.errors.ProgrammingError: 1064 (42000): SQL 構文にエラーがあります。''column1' = '(u\'James\',)' WHERE id = '1234'' at line 1 付近で使用する正しい構文については、MariaDB サーバーのバージョンに対応するマニュアルを確認してください。

0 投票する
1 に答える
2917 参照

python - ループでmysqlに接続する

私はmysqlサーバーに接続し、データを永久に取得する必要があります

だから私は2つの方法を持っています

1) mysql に接続し、しばらくしてからデータを取得します

これは正常に機能しますが、mysql 接続の問題が原因でスクリプトがクラッシュした場合、スクリプトはダウンします

2) 間で mysql に接続します

両方のコードが正常に機能していますが、私の質問はどちらが優れているのですか?!

0 投票する
1 に答える
972 参照

python - mysql.connector.errors.ProgrammingError: 1083 (42000): フィールド区切り引数が予期されたものではありません

Jupyter ノートブック (Python) を使用して mysql.connector を使用して MySQL に接続し、csv ファイルをデータベースにロードすると、カーソルを作成した後、次のことを試しました。

そして、「mysql.connector.errors.ProgrammingError: 1083 (42000): フィールド区切り引数が予期されたものではありません。マニュアルを確認してください」というエラー メッセージが表示されました。

MySQLでまったく同じSQLクエリを直接使用してcsvファイルをロードすると、Pythonでは失敗しましたが、動作します。

誰かが問題の場所を特定するのを手伝ってくれますか? ありがとうございました!

0 投票する
3 に答える
4149 参照

python - Connector/Python が多くの最適化挿入を実行しないのはなぜですか?

Connector/Python を使用して、mysql の一時テーブルに多くの行を挿入しています。行はすべてリストのリストにあります。私はこのように挿入を行います:

(もちろん、さらに多くの行を使用すると) パフォーマンスが極端に低下することに気付きました。SHOW PROCESSLIST を使用すると、各挿入が個別に実行されていることに気付きました。しかし、ドキュメントhttps://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-executemany.htmlには、これを 1 つの挿入に最適化する必要があると記載されています。どうしたの?

0 投票する
1 に答える
3844 参照

python - mysqlコネクタpythonを使用したpythonのエンコーディングの問題

データベースからデータを取得して処理する python スクリプトを作成しました。最初は、データベースの接続にpymysqlを使用していましたが、これをMySQL Connector for pythonに変更しました。MySQL Connector の使用を開始すると、次の問題が発生します

'ascii' コーデックは位置 14 ~ 16 の文字をエンコードできません: 序数が範囲外です (128)

MySQL Connector の文字セット設定を追加してみましたが、問題は解決しません。

誰でもこの問題について考えがありますか?