私はまだプログラミングに非常に慣れておらず、物事を正しく行う方法を自分に教えようとしています。
私は現在、python内で毎秒生成される1〜3個の値を取り、それをMySQLデータベースに保存するスクリプトを書いています。今後は、Webインターフェイスを構築して、それらの値を取り、うまく表示しますが、ここではデータを保存したいだけです。
Raspberry PiでPython=コードを実行します。うまくいけば、MySQLサーバーを備えた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
これを行うには多くの方法がありますが、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
というデータベースはすでに作成されています。mytable
とtest
のVARCHARフィールドを含むfoo
というデータベースをデータベースbar
にすでに作成しています。このスレッドの範囲から少し外れているため、これらの詳細については説明しませんが、ヘルプが必要な場合は、MySQLのドキュメントで creating users および creating tables を参照してください。 =。
MacOS SierraでSudo pip install mysql
がEnvironmentError: 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()
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())
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: