如何将这个PHP MYSQL函数翻译成Python



我需要在Python中复制以下函数。我包含了工作中的PHP代码,需要Python方面的帮助,因为我现在完全迷失了方向。

读取RFID卡并通过串行方式将标签传输到Python。这部分代码有效。我遇到的问题是插入此信息字符串作为要在mySQL 中查找的信息字符串

<?php
require 'database.php';

$UIDresult=$_POST["UIDresult"];
$Write="<?php $" . "UIDresult='" . $UIDresult . "'; " . "echo $" . "UIDresult;" . "?>"; 
file_put_contents('UIDContainer.php',$Write);

$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM table_mkaccess  where id = ?";
$q = $pdo->prepare($sql);
$q->execute(array($UIDresult));
$data = $q->fetch(PDO::FETCH_ASSOC);
Database::disconnect();
$msg = null;
if (null==$data['name']) {
$msg = "0";
$data['id']=$UIDresult;
} else {
$msg = "1";
}
echo $msg;



?>

Python代码到目前为止我已经尝试过了,我缺少什么。

import serial
import mysql.connector
rfid = serial.Serial(port = "/dev/ttyUSB0", baudrate=9600) 
while True:
if (rfid.in_waiting > 0):
UID = rfid.readline()
UID = UID.decode('Ascii')
mydb = mysql.connector.connect(
host = "localhost",
user = "****",
password = "****",
database = "****")

mycursor = mydb.cursor(buffered=True)
sql = "SELECT * FROM table_mkaccess WHERE id = '%s'"
mycursor.execute(sql,(UIDresult,))
data = mycursor.fetchall()

if data ==0:
print('0')
else:
print('1')

更新:现在收到以下错误

Traceback(最近调用last(:文件/home/base/testing3.py";,第17行,inmycursor.execute(sql,(UIDresort,((

mysql.connecter.errors.ProgrammingError:1064(42000(:您有SQL语法错误;查看与您的在"47D0D393\r\n"附近使用正确语法的MySQL服务器版本在第1行

一些更改:

  1. UID = UID.rstrip()以消除尾部空白(回车符和换行符,除非您确实希望这些字符存储在数据库中(
  2. sql = "SELECT * FROM table_mkaccess WHERE id = %s"(对于准备好的语句,您不希望%s占位符周围有引号。如果提供的实际值是字符串,SQL驱动程序将对该值执行"正确的操作"。(
  3. mycursor.execute(sql, (UID,))(使用正确的变量(

您必须将UID添加到查询polacholder

mycursor = mydb.cursor(buffered=True)
sql = "SELECT * FROM table_mkaccess WHERE id = %s"
mycursor.execute(sql,(UID,))
data = mycursor.fetchall()

最新更新