Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQL语法中的错误_Python_Mysql_Sql_Python 2.7_Mysql Python - Fatal编程技术网

Python SQL语法中的错误

Python SQL语法中的错误,python,mysql,sql,python-2.7,mysql-python,Python,Mysql,Sql,Python 2.7,Mysql Python,我正试图通过python脚本运行MySQL查询,但SQL语法中不断出现错误,从中可以看出查询设置正确。有人能再给我看一眼吗 conn = mysql.connector.connect(**config) connect = conn.cursor() query = u'INSERT INTO page_load_times (self, object_id, page_header, elapsed_time, date_run) ' \ 'V

我正试图通过python脚本运行MySQL查询,但SQL语法中不断出现错误,从中可以看出查询设置正确。有人能再给我看一眼吗

    conn = mysql.connector.connect(**config)
    connect = conn.cursor()
    query = u'INSERT INTO page_load_times (self, object_id, page_header, elapsed_time, date_run) ' \
            'VALUES ({}, {}, {}, {}, {})'.format(self, self.object_id, self.page_header, t.interval, timestamp)
    connect.execute(query)
    conn.commit()
    conn.close()
我得到的错误如下:

ProgrammingError: 1064 (42000): You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right 
syntax to use near '13:56:17.491000)' at line 1

不要通过字符串格式传递查询参数

让mysql客户端通过在
execute()
的第二个参数中将参数传递到查询中来完成这项工作。除了在引号和数据类型转换方面没有问题外,您还可以避免sql注入风险:

query = """INSERT INTO 
               page_load_times 
               (self, object_id, page_header, elapsed_time, date_run)
           VALUES 
               (%(self)s, %(object_id)s, %(page_header)s, %(interval)s, %(timestamp)s)"""
params = {'self': self, 
          'object_id': self.object_id, 
          'page_header': self.page_header, 
          'interval': t.interval, 
          'timestamp': timestamp}

connect.execute(query, params)

不要通过字符串格式传递查询参数

让mysql客户端通过在
execute()
的第二个参数中将参数传递到查询中来完成这项工作。除了在引号和数据类型转换方面没有问题外,您还可以避免sql注入风险:

query = """INSERT INTO 
               page_load_times 
               (self, object_id, page_header, elapsed_time, date_run)
           VALUES 
               (%(self)s, %(object_id)s, %(page_header)s, %(interval)s, %(timestamp)s)"""
params = {'self': self, 
          'object_id': self.object_id, 
          'page_header': self.page_header, 
          'interval': t.interval, 
          'timestamp': timestamp}

connect.execute(query, params)

语法错误是什么?猜测其中的oen是一个字符串,它在你的查询中被引用了…语法错误是什么?猜测oen是一个字符串,它在你的查询中被引用了…谢谢,这看起来可能会起作用,只要我发现别人的代码有问题。谢谢,这看起来可能会起作用,一旦我发现别人的代码有问题。