describe led_status; +------------------------------+-6ren">
gpt4 book ai didi

Python/MySQL 如何使用变量插入字符串,不断将 "TRUE"更改为 1

转载 作者:行者123 更新时间:2023-11-29 09:55:04 24 4
gpt4 key购买 nike

我有一个名为 led_status 的表和一个名为“test_led”的字段:

mysql> describe led_status;
+------------------------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------------+------------+------+-----+---------+-------+
| test_led | varchar(5) | NO | | NULL | |
+------------------------------+------------+------+-----+---------+-------+

我尝试使用以下代码输入“TRUE”或“FALSE”字符串(不是 int 1 或 0):

def write_database_value(table,field,value):
connect = mysql.connector.connect(user=db_info.username,
password=db_info.password,
host=db_info.servername,
database=db_info.database)
cursor = connect.cursor()
cursor.execute(("UPDATE %s SET %s = %s") % (table, field, value))
connect.commit()
cursor.close()
connect.close()

def read_database_value(table,field):
connect = mysql.connector.connect(user=db_info.username,
password=db_info.password,
host=db_info.servername,
database=db_info.database)
cursor = connect.cursor(buffered=True)
cursor.execute(("SELECT %s FROM %s") % (field, table))

for data in cursor:
database_value = data
cursor.close()
connect.close()
return database_value

从这个脚本调用:

def get_led_status(led):
led_status = read_database_value("led_status", led)
led_status = (led_status[0])
return led_status

def is_pool_pump_running():
pool_running = get_led_status("test_led")
if pool_running == "TRUE":
print("Pool Pump is Running, shutting it off now")
write_database_value("led_status","test_led","FALSE")
else:
print("Pool Pump is NOT Running, turning it on now")
write_database_value("led_status","test_led","TRUE")

但是每次我运行脚本时,它都会将“TRUE”更改为 1,将“FALSE”更改为 0。

我正在从平面文件切换到数据库,并且我的所有代码(到目前为止有 4000 行)都使用“TRUE”和“FALSE”,所以我真的不想为了使用而重写它1 和 0 相对于“TRUE”和“FALSE”。

任何想法将不胜感激。

最佳答案

MySQL 没有 bool 类型(true/false),它们会自动解释(并存储)为 0/1(在上面的架构中,您甚至明确声明您需要tinyints,而不是常规的 32 位整数)。 Nothing you can do about that!

如果您想存储文字值“TRUE”/“FALSE”,您应该使用 varchar(5) 类型的列。

旁注:这些列的默认值应该是 0 或 1,或者应该可以为空 - 您已将它们的默认值设置为 NULL 并且该列不可为空,这可能会导致错误。

关于Python/MySQL 如何使用变量插入字符串,不断将 "TRUE"更改为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54001489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com