web-dev-qa-db-ja.com

pythonがMySQLとインターフェースするための最良の方法

私はまだプログラミングに非常に慣れておらず、物事を正しく行う方法を自分に教えようとしています。

私は現在、python内で毎秒生成される1〜3個の値を取り、それをMySQLデータベースに保存するスクリプトを書いています。今後は、Webインターフェイスを構築して、それらの値を取り、うまく表示しますが、ここではデータを保存したいだけです。

Raspberry PiでPython=コードを実行します。うまくいけば、My​​SQLサーバーを備えたWebサーバーです。それ以外の場合は、別のRaspberry Piのデバイスで実行します。

ここで私が求めているのは、PythonをMySQLで使用するための最良の方法は何ですか?ライブラリまたはHTTP GET、または私が知らない別の方法...以来、私はWebインターフェイスを構築するつもりだったので、GETリクエストを受け取るAPI.phpページを作成することを考えていました。その後、PHPコードがデータをMySQLデータベースに書き込みます。

私が考えていたのは、Pythonリンクを生成し、リクエストライブラリを使用してサイトをリクエストすることです http://127.0.0.1/API.php?value1=XXX&Value2 = YYY&value3 = ZZZ 次に、データが正しく保存されている場合は、「Data Saved」のようなJSONが返されるのを待ってから、次の値を生成するループを続けます。

これを回避する最良の方法は何ですか、それとももっと良い方法がありますか?私はいくつかのセキュリティ問題があることを知っています、そしてコーディングについてもっと学んだらそれらを解決したいと思っています。また、1秒または5秒ごとにデータを書き込む必要があることを忘れないでください。うまくいけば、1秒ごと。

回答ありがとうございます、Throdne

8
Throdne

これを行うには多くの方法がありますが、MySQLサーバーは同じRaspberry Piにある可能性があると述べたのでまたは別のもの、以下はあなたがセットアップする必要があるものを取得する最も簡単な方法です。

最初に、Pythonパッケージをインストールする必要があります。そこにはたくさんありますが、 MySQL-python は十分に成熟していて良さそうです。

それをインストールするには:

$ pip install mysql

pipにまだ慣れていない場合は、 pipのドキュメント を確認して開始してください。)

Raspberry Piの1つでMySQLサーバーを実行したら、サーバーに接続してさまざまなタイプのクエリを実行するためにコードで実行する必要がある例を以下に示します。

import MySQLdb

Host = '192.168.99.100'
user = 'myuser'
password = 'secret'
port = 3306
db = 'test'

conn = MySQLdb.Connection(
    Host=host,
    user=user,
    passwd=password,
    port=port,
    db=db
)

# Example of how to insert new values:
conn.query("""INSERT INTO mytable VALUES ('foo3', 'bar2')""")
conn.commit()

# Example of how to fetch table data:
conn.query("""SELECT * FROM mytable""")
result = conn.store_result()
for i in range(result.num_rows()):
    print(result.fetch_row())

ライブラリの使用方法の詳細については、 MySQL-python user docs を確認してください。

上記のコードは、MySQLサーバーについていくつかのことを想定しています。

  • サーバーは192.168.99.100で実行されています。 127.0.0.1(localhost)または別のアドレスである可能性があります。
  • サーバーにはユーザーmyuserがすでに定義されており、パスワードと適切な権限が付与されています。
  • testというデータベースはすでに作成されています。
  • mytabletestのVARCHARフィールドを含むfooというデータベースをデータベースbarにすでに作成しています。

このスレッドの範囲から少し外れているため、これらの詳細については説明しませんが、ヘルプが必要な場合は、MySQLのドキュメントで creating users および creating tables を参照してください。 =。

7
larsbutler

MacOS SierraでSudo pip install mysqlEnvironmentError: mysql_config not foundで失敗しました。

Sudo pip install pymysqlは機能します。 PyMySQL は純粋なPythonで記述されているため、静的にコンパイルされたモジュールよりもクロスプラットフォームである必要があります。

コード例:

import pymysql.cursors

# Connect to the database
connection = pymysql.connect(Host='localhost',
                             user='user',
                             password='passwd',
                             db='db',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)

try:
    with connection.cursor() as cursor:
        # Create a new record
        sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
        cursor.execute(sql, ('[email protected]', 'very-secret'))

    # connection is not autocommit by default. So you must commit to save
    # your changes.
    connection.commit()

    with connection.cursor() as cursor:
        # Read a single record
        sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
        cursor.execute(sql, ('[email protected]',))
        result = cursor.fetchone()
        print(result)
finally:
    connection.close()
3
Cees Timmerman

Mysqlclientを最初にインストールします。これにより、Python 3.6を操作するためのサポートも提供されます。

pip install mysqlclient

コード例

    import mysql.connector
    import _mysql
    db=_mysql.connect("127.0.0.1","root","umer","sys")
    #db=_mysql.connect(Host,user,password,db)
    # Example of how to insert new values:
    db.query("""INSERT INTO table1 VALUES ('01', 'myname')""")
    db.store_result()
    db.query("SELECT * FROM new1.table1 ;") 
    #new1 is scheme table1 is table mysql 
    res= db.store_result()
    for i in range(res.num_rows()):
        print(result.fetch_row())
3
Umer

Pythonはxampp mysqlウィンドウをpymysql:に接続します

ステップ1:

コマンドプロンプトD:\ python-3.6.2\Scripts> pip install pymysqlを実行します。

ステップ2:

#!D:/python-3.6.2/python.exe 
print ("Content-Type: text/html\n")
import pymysql
conn = pymysql.connect(Host='localhost', port=3306, user='root', passwd='', db='python_mysql')
cur = conn.cursor()
cur.execute("SELECT * FROM authors")
print(cur.description)
print(" Test")
for row in cur:
    print(row)
cur.close()
conn.close()

ファイルをtestconn.pyとしてhtdocs/PythonProjectに保存して開きます http:// localhost/PythonProject \testconn.py

Crud Python&MySQL:

https://github.com/matinict/python-in-xampp-for-windows/

2
matinict