在 INSERT 语句中一起使用 SELECT 和 VALUES
Using SELECT and VALUES together in INSERT statement
我有一个查询作为 python 代码的一部分,其中查询需要使用程序中的变量以及来自另一个数据库的值。我正在使用 mysql-connector-python.
name
的值存在于 python 程序中,我想使用它和 table metrics
中的值将值插入 table points
.
这是我目前尝试过的方法:
class summer:
def __init__(self, name):
self.name = name
def sum_fun(self, name):
try:
con = mysql.connector.connect(host='localhost',
database='databasename', user='root', password='mypasword', charset='utf8')
if con.is_connected():
cursor = con.cursor(buffered=True)
def create_points_table():
query=("INSERT INTO points(username, sale,comm,dank) VALUES (%s, (SELECT SUM(regional + intnl) * 150, SUM(commission) * 50, SUM(thank_discount) * 10 FROM Metrics))")
cursor.execute(query, (name))
con.commit()
create_points_table();
except Error as e:
print(e)
cursor.close()
con.close()
查询:
query=("INSERT INTO points(username, sale,comm,dank)
VALUES (%s,
(SELECT
SUM(regional + intnl) * 150,
SUM(commission) * 50,
SUM(thank_discount) * 10 FROM Metrics))")
查询调用:
cursor.execute(query, (name))
正在将 None 个值插入点 table。我在这里做错了什么?
您不能混合使用 values
和这样的子查询,但您可以改为查询您希望在 values
子句中拥有的值:
query=("INSERT INTO points(username, sale,comm,dank)
(SELECT
%s, -- Here!
SUM(regional + intnl) * 150,
SUM(commission) * 50,
SUM(thank_discount) * 10 FROM Metrics))")
我有一个查询作为 python 代码的一部分,其中查询需要使用程序中的变量以及来自另一个数据库的值。我正在使用 mysql-connector-python.
name
的值存在于 python 程序中,我想使用它和 table metrics
中的值将值插入 table points
.
这是我目前尝试过的方法:
class summer:
def __init__(self, name):
self.name = name
def sum_fun(self, name):
try:
con = mysql.connector.connect(host='localhost',
database='databasename', user='root', password='mypasword', charset='utf8')
if con.is_connected():
cursor = con.cursor(buffered=True)
def create_points_table():
query=("INSERT INTO points(username, sale,comm,dank) VALUES (%s, (SELECT SUM(regional + intnl) * 150, SUM(commission) * 50, SUM(thank_discount) * 10 FROM Metrics))")
cursor.execute(query, (name))
con.commit()
create_points_table();
except Error as e:
print(e)
cursor.close()
con.close()
查询:
query=("INSERT INTO points(username, sale,comm,dank)
VALUES (%s,
(SELECT
SUM(regional + intnl) * 150,
SUM(commission) * 50,
SUM(thank_discount) * 10 FROM Metrics))")
查询调用:
cursor.execute(query, (name))
正在将 None 个值插入点 table。我在这里做错了什么?
您不能混合使用 values
和这样的子查询,但您可以改为查询您希望在 values
子句中拥有的值:
query=("INSERT INTO points(username, sale,comm,dank)
(SELECT
%s, -- Here!
SUM(regional + intnl) * 150,
SUM(commission) * 50,
SUM(thank_discount) * 10 FROM Metrics))")