在 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))")