当前位置: 首页 > 知识库问答 >
问题:

如何将python变量的值存储在数据库中的phpMyAdmin中?

邵宜年
2023-03-14

我创建了一个名为“坐标”的python列表变量。坐标列表由图中随机点的X轴和Y轴值对组成。一对中的第一个值表示X轴值,第二个值表示Y轴值。坐标列表变量如下所示。

coordinates = [(95, 171), (54, 131), (125, 131), (213, 78)]

我实现了一个名为'direction_finder'的函数,通过使用坐标列表变量中的X轴值和Y轴值来查找基本方向。

函数的实现步骤如下

1.访问坐标列表变量中每对中的X轴值。

 x1 = coordinates[0][0]
 x2 = coordinates[1][0]
 x3 = coordinates[2][0]
 x4 = coordinates[3][0]

2.访问坐标列表变量中每对Y轴值。

 y1 = coordinates[0][1]
 y2 = coordinates[1][1]
 y3 = coordinates[2][1]
 y4 = coordinates[3][1]

3.取X轴和Y轴值的度数的值。

degrees_x1y1 = math.atan2(x1,y1)/math.pi* 180
degrees_x2y2 = math.atan2(x2,y2)/math.pi* 180
degrees_x3y3 = math.atan2(x3,y3)/math.pi* 180
degrees_x4y4 = math.atan2(x4,y4)/math.pi* 180

4,加一个if条件,取最终度值。

if degrees_x1y1 < 0:
    degrees_final_x1y1 = 360 + degrees_x1y1
else:
    degrees_final_x1y1 = degrees_x1y1


if degrees_x2y2 < 0:
    degrees_final_x2y2 = 360 + degrees_x2y2
else:
    degrees_final_x2y2 = degrees_x2y2


 if degrees_x3y3 < 0:
    degrees_final_x3y3 = 360 + degrees_x3y3
else:
    degrees_final_x3y3 = degrees_x3y3

 if degrees_x4y4 < 0:
    degrees_final_x4y4 = 360 + degrees_x4y4
else:
    degrees_final_x4y4 = degrees_x4y4

5.为基数方向创建数组。

direction_brackets = ["NORTH", "NORTH-EAST","EAST","SOUTH-EAST","SOUTH","SOUTH-WEST","WEST","NORTH-WEST"]

6.对最终度值进行四舍五入

round_x1y1 = round(degrees_final_x1y1/45)
round_x2y2 = round(degrees_final_x2y2/45)
round_x3y3 = round(degrees_final_x3y3/45)
round_x4y4 = round(degrees_final_x4y4/45)

7.获取最终度值的最终基本方向

final_direction_x1y1 = direction_brackets[round_x1y1]
final_direction_x2y2 = direction_brackets[round_x2y2]
final_direction_x3y3 = direction_brackets[round_x3y3]
final_direction_x4y4 = direction_brackets[round_x4y4]

8.返回最终的基数方向值

 return final_direction_x1y1,final_direction_x2y2, final_direction_x3y3, final_direction_x4y4

9.创建一个名为directions_list的列表变量,以收集direction_finder函数返回的最终基本方向值。

direction_list = []
direction_list= direction_lookup(coordinates)

10.从“direction_list”变量中获取最终的基本方向。

direction_x1y1 = direction_list[0]
direction_x2y2 = direction_list[1]
direction_x3y3 = direction_list[2]
direction_x4y4 = direction_list[3]

在实现代码之后,我必须创建数据库连接来在PHPMyAdmin数据库中存储最终的基本方向,我创建了一个数据库和一个单独的表来存储最终的基本方向。这些STPE的代码如下所示。

connection = pymysql.connect(host="localhost", user="root", passwd="", database="directions")
cursor = connection.cursor()
directionsCollect= """Create Table directions_store(
    id Int(11) Primary Key Auto_Increment,
    cardinal_directions Varchar(255),
)"""


cursor.execute(directionsCollect)

之后,我实现了insert命令,向创建的表插入一个方向。

record_x1y1 = """Insert Into directions_store(id, cardinal_directions)
Values(%(cardinal_directions)s)""",
{
   'cardinal_directions': direction_x1y1
}

cursor.execute(record_x1y1)

#commit the connection
connection.commit()

#close the connection
connection.close() 

但问题是插入没有发生。错误如下所示。

Traceback (most recent call last):
File "floor_plan_detector.py", line 320, in <module>
 cursor.execute(record_x1y1)
  File "/home/sameera/anaconda3/lib/python3.7/site-packages/pymysql/cursors.py", line 163,    in execute
  result = self._query(query)
  File "/home/sameera/anaconda3/lib/python3.7/site-packages/pymysql/cursors.py", line 321, in _query
  conn.query(q)
 File "/home/sameera/anaconda3/lib/python3.7/site-packages/pymysql/connections.py", line 504, in query
  self._execute_command(COMMAND.COM_QUERY, sql)
  File "/home/sameera/anaconda3/lib/python3.7/site-packages/pymysql/connections.py", line 762, in _execute_command
  packet = prelude + sql[:packet_size-1]
  TypeError: can't concat tuple to bytes

错误表示类型错误。有人能解释一下这里出了什么问题吗?。

共有1个答案

萧建木
2023-03-14

先不说你是怎么做的,

在你的台词里:

record_x1y1 = """Insert Into directions_store(id, cardinal_directions)
Values(%(cardinal_directions)s)""",
{
   'cardinal_directions': direction_x1y1
}

cursor.execute(record_x1y1)

您正在创建一个tuple(str,dict)类型的tuple:record_x1y1,然后将它传递给这样的函数

然后,PyMySQL的Cursor.execute尝试对它执行某些操作,但它并不知道,因此出现了错误。

您应该做的是分别定义查询和参数:

record_x1y1 = """Insert Into directions_store(id, cardinal_directions)
Values(%(cardinal_directions)s)"""

params = {
   'cardinal_directions': direction_x1y1
}

cursor.execute(record_x1y1, params)

也可以将元组解包为args:

record_x1y1 = """Insert Into directions_store(id, cardinal_directions)
Values(%(cardinal_directions)s)""",
{
   'cardinal_directions': direction_x1y1
}

cursor.execute(*record_x1y1)
 类似资料:
  • 问题内容: 我有一个MySQL数据库。默认存储引擎为。 我想将其更改为。 我可以逐个表地更改它,但是我想一次更改它影响所有表。 如何更改数据库存储引擎?我尝试过,但似乎没有选择。 问题答案: 登录后,转到要更改的表,然后单击“操作”选项卡。在这里,您可以更改存储类型以及其他一些选项 在线文件

  • 问题内容: 我有一个带有字符串值的变量。我想创建一个以值作为其名称/标识符的列表,然后将值附加到列表中。因此,假设变量,我想创建一个名为的列表。显然,就我而言,我不知道的价值。 问题答案: 别。创建动态变量很少是一个好主意,并且,如果您尝试创建本地名称(在函数内部),则很困难,并且会极大地影响性能。 请改用字典: 命名空间只是用于在其中查找名称的代码的默认词典。创建更多此类词典更加容易和整洁。 您

  • 我正在构建一个数据产品(一个NLP聊天应用程序),我正在学习它,以便用户可以有更好的UI与我的产品交互。 我在Flask中写下了以下代码,以获取用户输入并将其存储在变量中。 主要的派克 初始化。html 我已经处理了表单数据,并将其存储在变量中。我想把这个变量传递给另一个Python脚本,其中包含我的训练模型的代码。 doc2vec_main。派克 我的问题是我找不到连接doc2vec_main的

  • 本文向大家介绍将列的值存储到MySQL存储过程的变量中,包括了将列的值存储到MySQL存储过程的变量中的使用技巧和注意事项,需要的朋友参考一下 要声明变量,请在MySQL存储过程中使用DECLARE。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 这是创建存储过程并将上述表的列值存储在存储过程变量中的查询- 调用存储过程- 这

  • 我对node js和expressjs框架很陌生。我正在开发一个web应用程序,我被卡住了。我已经设置了所有的数据库要求,所有的工作都很好,现在我想把一些数据保存到数据库中,我把数据存储在一个变量中,但不幸的是,存储在变量(MyID)中的数据没有保存。这是我的密码 var=MyID app.post(“/AddContact”,function(req,res){ }

  • 所以,我正在运行一个童子军服务器,为此,我制作了一个机器人。为了更好的组织,我们一直在努力获得每个人的真实姓名。机器人将要求他们的名字,他们将键入!命名为Travis_c。然后我希望它将他们的不一致用户名存储在一个变量中,并发送一条消息告诉我trullycool= ' ' 我有问题用户=message.author()我知道如果我想回复我做的事情message.reply但在我的情况下不会工作。

  • 我创建了一个TextView,它以多行显示值 ,我希望将该值保留在SQLite数据库中。这是我使用的代码: 问题是当我保存值时,整个值被插入到一个单元格中。我希望每行的值分开,然后插入到每行的单个单元格中,尽管我使用扫描器方法插入数据,但它不起作用。那有什么办法吗?

  • 问题内容: 在MySQL数据库中用PHP存储IP的最佳实践是什么?有一个名为ip2long的函数-但这仅适用于IPv4。但是IPv6呢? 我知道一个用于IPv6 IP的php函数,但是在Windows上的PHP <Version 5.3上不起作用 问题答案: 可以将点分十进制IPv4地址转换为整数,最大大小为32位。IPv6地址是128位。由于128位不适合PHP int,因此在PHP中使用它会很