python与MySQL交互的最佳方式

Thr*_*dne 6 python mysql json get http

我仍然很擅长编程,并试图教会自己正确的做事方式.

我目前正在编写一个脚本,它将在python中获取大约每秒生成的1-3个值,然后将其保存到MySQL数据库中.接下来将构建一个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秒钟一次.

感谢你们的答复,Throdne

小智 7

有很多方法可以做到这一点,但既然你说MySQL服务器可能在同一个Raspberry Pi 不同的Raspberry Pi上,以下是获得你需要设置的最简单的方法.

首先,您需要安装包含MySQL绑定的Python包.那里有很多,但MySQL-python似乎成熟和足够好.

要安装它:

$ pip install mysql
Run Code Online (Sandbox Code Playgroud)

(如果您还不熟悉pip,请查看pip文档以开始使用.)

一旦你在一个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())
Run Code Online (Sandbox Code Playgroud)

查看MySQL-python用户文档以获取有关如何使用库的更多详细信息.

上面的代码假设您的MySQL服务器有几个方面:

  • 您的服务器正在运行192.168.99.100.它可以是127.0.0.1(localhost)或其他地址.
  • 您的服务器已经具有用户myuser定义,具有密码和适当的权限.
  • 您已经创建了一个名为的数据库test.
  • 您已经创建了一个称为表mytable数据库test包含的VARCHAR领域foobar.

我不会详细介绍这些细节,因为这有点超出了这个线程的范围,但如果需要帮助,请查看用于创建用户创建表的MySQL文档.