python - python 与 MySQL 接口(interface)的最佳方式

标签 python mysql json http get

我对编程和尝试自学正确的做事方式仍然很陌生。

我目前正在编写一个脚本,该脚本将采用 1-3 个值,大约每秒生成一次,在 python 中,然后将其保存到 MySQL 数据库中。 future 将构建一个 Web 界面,该界面将采用这些值并很好地显示它们,但现在我只想保存数据。

我将在 Raspberry Pi 上运行 Python 代码,并希望在 MySQL 服务器上运行 Web 服务器。如果不在另一个 Raspberry Pi 上的那个设备上。

我想问的是,Python 与 MySQL 协同工作的最佳方式是什么?库或 HTTP GET,或其他我不知道的方式...因为,我要构建一个 Web 界面,我正在考虑拥有一个 API.php 页面,该页面将接受 GET 请求,然后 PHP 代码将写入数据到MySQL数据库。

我的想法是让 Python 生成一个链接,然后使用请求库来请求站点,例如 http://127.0.0.1/API.php?value1=XXX&Value2=YYY&value3=ZZZ如果数据已正确保存,则等待 JSON 返回类似“已保存数据”的内容。然后继续循环生成下一个值。

解决此问题的最佳方法是什么,或者是否有更好的方法?我知道我会遇到一些安全问题,我希望在我学习更多有关编码的知识后解决这些问题。请记住,我希望每 1 秒或 5 秒写入一次数据。希望每 1 秒一次。

谢谢大家的回复, 色氨酸

最佳答案

您可以通过多种方式做到这一点,但由于您声明 MySQL 服务器可以在同一个 Raspberry Pi 上,下面是获得所需设置的最简单方法。

首先,您需要安装一个包含 MySQL 绑定(bind)的 Python 包。那里有很多,但是MySQL-python看起来已经足够成熟和优秀了。

安装它:

$ pip install mysql

(如果您还不熟悉 pip,请查看 pip documentation 开始。)

在您的一个 Raspberry Pis 上运行 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(本地主机)或其他地址。
  • 您的服务器已经定义了用户 myuser,具有密码和适当的权限。
  • 您已经创建了一个名为 test 的数据库。
  • 您已经在数据库 test 上创建了一个名为 mytable 的表,其中包含 foobar 的 VARCHAR 字段>.

我不会深入讨论这些细节,因为这稍微超出了本主题的范围,但如果您需要帮助,请查看 creating users 的 MySQL 文档。和 creating tables .

关于python - python 与 MySQL 接口(interface)的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35641893/

相关文章:

python - PyPy 使用什么样的 JIT 编译器?

python - 在 Mechanize 中识别浏览器警报消息 - Python

java - 使用 PHP 将 Android 数据添加到 MySQL

javascript - 在 node.js mysql-node 查询中使用变量

Jquery getJSON 不起作用,但 ajax 可以

python - 从列表中删除整个列表

Python:如何写入文件并持续监视其文件大小变化?

php - PHP网格精简版。无法在数据表中查看MySQL数据

java - GSON:如何在保持循环引用的同时防止 StackOverflowError?

jquery - 在 json 中循环 - jquery