問題タブ [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.
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 ステートメントに引数を渡すことはできませんか? 助けてください。
python - MySQL/Python -- コミットされた変更がループに表示されない
MySQL Connector/Python を使用して、2 秒ごとに値の変更をチェックし続けるループがあります。すべての肉を除いたループは次のとおりです (プリントはテスト目的でそこにあります:
get_row は単純な選択クエリであり、namedtuple fetchall を返します (したがって、末尾の [0] は 1 行のみになります)。
問題は、初期値を取得すると、変更してもその値を返し続けることです。たとえば、開始が「0」の場合、管理者に移動して変更しても、新しいターミナルを開いて変更してコミットしても、「0」を出力し続けます。query_cache_size を 0 に設定しようとしましたが、まだうまくいきません。コミットの問題だと思っていましたが、そうでもありませんでした。変更して再接続すると、変更が表示されますが、プログラム中に変更されない理由がわかりません。何かご意見は?
編集:それが発生した場合に備えて、はい、カーソルを閉じて、呼び出しごとに新しいカーソルを取得しています。
python - Python 2.7 の mysql.connector でパラメーター化されたクエリを使用する
mysql.connector
pyCharmで実行してPython 2.7を使用しています
こことここに示すようなパラメーター化されたクエリを使用する必要があります
これらの例を考えるとcursor.execute("SELECT * FROM automatedReports WHERE pythonFunctionName = %s", (function_name))
、以下のように動作するはずです。
ただし、pyCharm でこの行を記述すると、次のエラーが発生します。
検査は次のように述べています。
コードを実行すると、次のエラーが発生します。
SQL 構文にエラーがあります。1 行目の '%s' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
完全なコードは次のとおりです。
ここで何が間違っていますか?これは古い構文ですか?私はそうは思わないでしょう...
クエリ文字列に値を入力すると、すべて正常に機能しますが、パラメーターを使用できないことに注意してください。
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 サーバーのバージョンに対応するマニュアルを確認してください。
python - ループでmysqlに接続する
私はmysqlサーバーに接続し、データを永久に取得する必要があります
だから私は2つの方法を持っています
1) mysql に接続し、しばらくしてからデータを取得します
これは正常に機能しますが、mysql 接続の問題が原因でスクリプトがクラッシュした場合、スクリプトはダウンします
2) 間で mysql に接続します
両方のコードが正常に機能していますが、私の質問はどちらが優れているのですか?!
python - mysql.connector.errors.ProgrammingError: 1083 (42000): フィールド区切り引数が予期されたものではありません
Jupyter ノートブック (Python) を使用して mysql.connector を使用して MySQL に接続し、csv ファイルをデータベースにロードすると、カーソルを作成した後、次のことを試しました。
そして、「mysql.connector.errors.ProgrammingError: 1083 (42000): フィールド区切り引数が予期されたものではありません。マニュアルを確認してください」というエラー メッセージが表示されました。
MySQLでまったく同じSQLクエリを直接使用してcsvファイルをロードすると、Pythonでは失敗しましたが、動作します。
誰かが問題の場所を特定するのを手伝ってくれますか? ありがとうございました!
python - Connector/Python が多くの最適化挿入を実行しないのはなぜですか?
Connector/Python を使用して、mysql の一時テーブルに多くの行を挿入しています。行はすべてリストのリストにあります。私はこのように挿入を行います:
(もちろん、さらに多くの行を使用すると) パフォーマンスが極端に低下することに気付きました。SHOW PROCESSLIST を使用すると、各挿入が個別に実行されていることに気付きました。しかし、ドキュメントhttps://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-executemany.htmlには、これを 1 つの挿入に最適化する必要があると記載されています。どうしたの?
python - mysqlコネクタpythonを使用したpythonのエンコーディングの問題
データベースからデータを取得して処理する python スクリプトを作成しました。最初は、データベースの接続にpymysqlを使用していましたが、これをMySQL Connector for pythonに変更しました。MySQL Connector の使用を開始すると、次の問題が発生します
'ascii' コーデックは位置 14 ~ 16 の文字をエンコードできません: 序数が範囲外です (128)
MySQL Connector の文字セット設定を追加してみましたが、問題は解決しません。
誰でもこの問題について考えがありますか?