如何将 mysql 数据库中的列的总和存储到 python 变量?
How to store the sum of a column from a mysql database to a python variable?
前面初学者的代码有点长,请大家帮忙
我有一个包含以下值的数据库:
Sl.No
trips
sales
price
1
5
20
220
2
8
30
330
3
9
45
440
4
3
38
880
我正在尝试使用 mysql-connector 和 python 来获取 trips、sales 和 price 列的总和作为变量,并使用它在 python 脚本。
这是我目前所拥有的:
def sum_fun():
try:
con = mysql.connector.connect(host='localhost',
database='twitterdb', user='root', password='mypasword', charset='utf8')
if con.is_connected():
cursor = con.cursor(buffered=True)
def sumTrips():
cursor.execute("SELECT SUM(trips) FROM table_name")
sum1=cursor.fetchall()[0][0]
return int(sum1)
def sumSales():
cursor.execute("SELECT SUM(sales) FROM table_name")
sum2=cursor.fetchall()[0][0]
return int(sum2)
def sumPrice():
cursor.execute("SELECT SUM(price) FROM table_name")
sum3=cursor.fetchall()[0][0]
return int(sum3)
except Error as e:
print(e)
cursor.close()
con.close()
我想接收三个总和作为三个变量 sum_trips
、sum_sales
和 sum_price
并为它们分配一个积分系统,以便:
trip_points=20*sum_trips
sales_points=30*sum_sales
price_points=40*sum_price
然后将三个变量trip_points, sales_points, prices_points
插入到同一个数据库Points
中的另一个table中,列名与变量名相同
长期以来,我一直在努力寻找这个问题的答案。任何帮助或指导将不胜感激。我是大多数这些东西的初学者,所以如果有更好的方法来实现我正在寻找的东西,请告诉我。谢谢
我可能遗漏了一些东西,但是 运行 针对同一个 table 的 3 个不同查询(在 MySQL 中也是如此,它不是柱状的)不是很有效,我可能会只需执行以下命令:
CREATE new_table as
(SELECT
SUM(trips) * 20 as trip_points,
SUM(sales) * 20 as sales_points,
SUM(price) * 20 as price_points
FROM table_name)
根据 MySQL 提示或 Python(如果您正在尝试某种自动化)
让我知道这是否有助于您前进。
这是您的代码,稍作改动 returns 一个具有三个值的元组,例如 (sumTrips, sumSales, sumPrice)
但我故意忽略了关闭连接,(请参阅第二个代码在连接获取的位置剪下自动关闭):
def sum_fun():
def sumTrips(cursor): # receives the cursor object, for queries
cursor.execute("SELECT SUM(trips) FROM table_name")
sum1=cursor.fetchall()[0][0]
return int(sum1)
def sumSales(cursor):
cursor.execute("SELECT SUM(sales) FROM table_name")
sum2=cursor.fetchall()[0][0]
return int(sum2)
def sumPrice(cursor):
cursor.execute("SELECT SUM(price) FROM table_name")
sum3=cursor.fetchall()[0][0]
return int(sum3)
try:
con = mysql.connector.connect(host='localhost', password='mypasword',
database='twitterdb', user='root', charset='utf8')
cursor = con.cursor(buffered=True)
return (sumTrips(cursor), sumSales(cursor), sumPrice(cursor))
except Exception as e:
print(e)
raise Exception("The connection fail because of this error: {}".format(e))
您可能希望将其调用为:
sumTrips, sumSales, sumPrice = sum_fun()
这段代码给出了相同的结果,但使用了 with
:
def sum_fun():
def sum_column(cursor, column):
cursor.execute(f"SELECT SUM({column}) FROM table_name")
sum1=cursor.fetchall()[0][0]
return int(sum1)
try:
with mysql.connector.connect(host='localhost', password='mypasword',
database='twitterdb', user='root', charset='utf8') as con:
with con.cursor(buffered=True) as cursor:
return (sum_column(cursor, "trips"), sum_column(cursor, "sales"), sum_column(cursor, "price"))
except Exception as e:
print(e)
raise Exception("The connection fail because of this error: {}".format(e))
上面的代码使用了with
语句,它会在with
中的块结束时关闭连接,因为调用了__exit__()
方法,而__exit__()
方法又调用了close()
方法关闭连接。
前面初学者的代码有点长,请大家帮忙
我有一个包含以下值的数据库:
Sl.No | trips | sales | price |
---|---|---|---|
1 | 5 | 20 | 220 |
2 | 8 | 30 | 330 |
3 | 9 | 45 | 440 |
4 | 3 | 38 | 880 |
我正在尝试使用 mysql-connector 和 python 来获取 trips、sales 和 price 列的总和作为变量,并使用它在 python 脚本。 这是我目前所拥有的:
def sum_fun():
try:
con = mysql.connector.connect(host='localhost',
database='twitterdb', user='root', password='mypasword', charset='utf8')
if con.is_connected():
cursor = con.cursor(buffered=True)
def sumTrips():
cursor.execute("SELECT SUM(trips) FROM table_name")
sum1=cursor.fetchall()[0][0]
return int(sum1)
def sumSales():
cursor.execute("SELECT SUM(sales) FROM table_name")
sum2=cursor.fetchall()[0][0]
return int(sum2)
def sumPrice():
cursor.execute("SELECT SUM(price) FROM table_name")
sum3=cursor.fetchall()[0][0]
return int(sum3)
except Error as e:
print(e)
cursor.close()
con.close()
我想接收三个总和作为三个变量 sum_trips
、sum_sales
和 sum_price
并为它们分配一个积分系统,以便:
trip_points=20*sum_trips
sales_points=30*sum_sales
price_points=40*sum_price
然后将三个变量trip_points, sales_points, prices_points
插入到同一个数据库Points
中的另一个table中,列名与变量名相同
长期以来,我一直在努力寻找这个问题的答案。任何帮助或指导将不胜感激。我是大多数这些东西的初学者,所以如果有更好的方法来实现我正在寻找的东西,请告诉我。谢谢
我可能遗漏了一些东西,但是 运行 针对同一个 table 的 3 个不同查询(在 MySQL 中也是如此,它不是柱状的)不是很有效,我可能会只需执行以下命令:
CREATE new_table as
(SELECT
SUM(trips) * 20 as trip_points,
SUM(sales) * 20 as sales_points,
SUM(price) * 20 as price_points
FROM table_name)
根据 MySQL 提示或 Python(如果您正在尝试某种自动化)
让我知道这是否有助于您前进。
这是您的代码,稍作改动 returns 一个具有三个值的元组,例如 (sumTrips, sumSales, sumPrice)
但我故意忽略了关闭连接,(请参阅第二个代码在连接获取的位置剪下自动关闭):
def sum_fun():
def sumTrips(cursor): # receives the cursor object, for queries
cursor.execute("SELECT SUM(trips) FROM table_name")
sum1=cursor.fetchall()[0][0]
return int(sum1)
def sumSales(cursor):
cursor.execute("SELECT SUM(sales) FROM table_name")
sum2=cursor.fetchall()[0][0]
return int(sum2)
def sumPrice(cursor):
cursor.execute("SELECT SUM(price) FROM table_name")
sum3=cursor.fetchall()[0][0]
return int(sum3)
try:
con = mysql.connector.connect(host='localhost', password='mypasword',
database='twitterdb', user='root', charset='utf8')
cursor = con.cursor(buffered=True)
return (sumTrips(cursor), sumSales(cursor), sumPrice(cursor))
except Exception as e:
print(e)
raise Exception("The connection fail because of this error: {}".format(e))
您可能希望将其调用为:
sumTrips, sumSales, sumPrice = sum_fun()
这段代码给出了相同的结果,但使用了 with
:
def sum_fun():
def sum_column(cursor, column):
cursor.execute(f"SELECT SUM({column}) FROM table_name")
sum1=cursor.fetchall()[0][0]
return int(sum1)
try:
with mysql.connector.connect(host='localhost', password='mypasword',
database='twitterdb', user='root', charset='utf8') as con:
with con.cursor(buffered=True) as cursor:
return (sum_column(cursor, "trips"), sum_column(cursor, "sales"), sum_column(cursor, "price"))
except Exception as e:
print(e)
raise Exception("The connection fail because of this error: {}".format(e))
上面的代码使用了with
语句,它会在with
中的块结束时关闭连接,因为调用了__exit__()
方法,而__exit__()
方法又调用了close()
方法关闭连接。