在此服务器上找不到 URL?(Python)

时间:2021-03-08 22:34:44

标签: python php sql raspberry-pi3

我正在从事一个项目,该项目将来自 Raspberry 的数据发送到 SQL 数据库,并且我正在使用“PHPMyAdmin”。我设法做了一些经验来检测错误的来源。我得出的结论是问题仍然存在于“request.post()”方法的 URL 中,该方法旨在读取我的 php 文件(服务器代码)。当我运行该程序时,我收到一条消息“在此服务器上找不到请求的 URL”。所以我的问题是:我应该在 URL 地址中提供什么?我应该把我的IP地址吗?还是只有 127.0.0.1 ?

服务器代码:

<?php

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";



// this is just to test whether the connection is established and the data was inserted into my table successfully. Indeed, when I pass these as values for my new inserted data. Everything works fine.
$var1=12; 
$var2=133;

//But when I use these, my program doesn't work. Which means that the data wasn't sent by my python code
//$var1 = $_POST["var1"];
//$var2 = $_POST["var2"];

echo $var1;
echo $var2;

    $conn = new mysqli($servername, $username, $password, $dbname);

    if ($conn->connect_error) 
    {
        die("Connection failed: " . $conn->connect_error);
    }
  
    $sql = "INSERT INTO test (var1, var2) VALUES ($var1, $var2)";

    if ($conn->query($sql) === TRUE) 
    {
        echo "New record created successfully!";
    }
    else 
    {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }

    $conn->close();
?> 

Python 代码:

import requests


var1=12
var2=13

datavars = {'var1': var1, 'var2': var2}

r = requests.post('http://localhost/Test/test.php, data=datavars') #PROBLEM HEEERE!!!Localhost??
print(r.text)

1 个答案:

答案 0 :(得分:0)

在试用 Python 代码示例和部分 PHP 代码作为测试后,我认为问题可能与 Python 代码中引号的使用有关。

特别是,主要问题似乎与这一行有关(如您所见):

r = requests.post('http://localhost/Test/test.php, data=datavars')

这一行应该是这样写的,而不是:

r = requests.post('http://localhost/Test/test.php', data=datavars)

(看看 '' 标记是如何围绕 URL 的,但它们现在如何在 , data ... 部分之前结束?)

The related documentation for requests 还表明 POST 的格式应该具有类似的格式:

r = requests.post('https://httpbin.org/post', data = {'key':'value'})

如果您对 Python 代码进行更改,可能有助于解决您面临的问题。

这是我用来测试的代码(基于您的代码):

PHP 代码:

<?php
// ref: https://www.php.net/manual/en/reserved.variables.post
print_r($_POST);
?>

Python 代码:

import requests

var1 = 12
var2 = 13

datavars = {'var1': var1, 'var2': var2}
# ref: https://requests.readthedocs.io/en/master/user/quickstart/#custom-headers
headers = {'Content-Type': 'application/x-www-form-urlencoded'}

r = requests.post('http://localhost/Test/test.php', data=datavars, headers=headers)
print(r.text)

Python 代码的输出(PHP 代码的结果):

Array
(
    [var1] => 12
    [var2] => 13
)