python 与 MySQL 接口的最佳方式

新手上路,请多包涵

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

我目前正在编写一个脚本,该脚本将采用 1-3 个值,大约每秒生成一次,在 python 中,然后将其保存到 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

原文由 Throdne 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 676
2 个回答

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

首先,您需要安装一个包含 MySQL 绑定的 Python 包。那里有很多,但是 MySQL-python 似乎已经成熟并且足够好。

安装它:

 $ pip install mysql

(如果您还不熟悉 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())

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

上面的代码假设了一些关于你的 MySQL 服务器的事情:

  • 您的服务器运行在 192.168.99.100 。它可以是 127.0.0.1 (localhost) 或其他地址。
  • 您的服务器已经定义了用户 myuser ,具有密码和适当的权限。
  • 您已经创建了一个名为 test 的数据库。
  • You have already created a table called mytable on database test which contains the VARCHAR fields of foo and bar .

我不会详细介绍这些细节,因为这稍微超出了本主题的范围,但如果您需要帮助,请查看 MySQL 文档以 创建用户创建表

原文由 larsbutler 发布,翻译遵循 CC BY-SA 3.0 许可协议

首先安装 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())

原文由 Umer 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏