Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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 将列表项作为单独的条目插入数据库_Python_Google App Engine - Fatal编程技术网

Python 将列表项作为单独的条目插入数据库

Python 将列表项作为单独的条目插入数据库,python,google-app-engine,Python,Google App Engine,我有一个输入字段,基本上是一个逗号分隔的字符串(即类似于“deniscm、toms、peters”)。这些信息通过AJAX发送到我的Python处理程序SaveQueryPage。我想做的是将这些信息解析为一个列表,然后将每个条目插入到我的数据库中。我的代码如下,但不幸的是它不能工作。有什么建议吗 Python代码: class SaveQueryPage(webapp2.RequestHandler): def post(self): user = users.get_curren

我有一个输入字段,基本上是一个逗号分隔的字符串(即类似于“deniscm、toms、peters”)。这些信息通过AJAX发送到我的Python处理程序SaveQueryPage。我想做的是将这些信息解析为一个列表,然后将每个条目插入到我的数据库中。我的代码如下,但不幸的是它不能工作。有什么建议吗

Python代码:

class SaveQueryPage(webapp2.RequestHandler):
  def post(self):
    user = users.get_current_user()
    user_nickname = user.nickname()
    query_name = self.request.get('queryName')
    query_collab = self.request.get('queryCollab')

    query_collaborators = re.split(r'\s*[,]\s*', query_collab.strip())
    query_collaborators = query_collaborators.append(user_nickname)
    query_collaborators = filter(None, query_collaborators)

    conn = rdbms.connect(instance=_INSTANCE_NAME, database='queryInfo')
    cursor = conn.cursor()
    cursor.execute('INSERT INTO queries (userNickname, queryName) VALUES (%s, %s)', (user_nickname, query_name))
    conn.commit()

    for item in query_collaborators:
      cursor = conn.cursor()
      cursor.execute('INSERT INTO collaborators (queryName, userNickname) VALUES (%s, %s)', (query_name, item))
      conn.commit()

    conn.close()

我终于设法让它工作起来了。看起来正则表达式将列表中的项转换为unicode格式,这是在我添加一些日志时才发现的。我还在列表中添加字符串时出错。谢谢你的指点!下面的代码现在适用于我:

class SaveQueryPage(webapp2.RequestHandler):
  def post(self):
    user = users.get_current_user()
    user_nickname = user.nickname()
    user_email = user.email()

    query_name = self.request.get('queryName')
    query_description = self.request.get('queryDescription')

    query_collab = self.request.get('queryCollab')
    logging.info('Data read for query_collab is %s', query_collab)

    query_collab_re = re.split(r'\s*[,;]\s*', query_collab.strip())
    logging.info('Data read for query_collab_re is %s', query_collab_re)

    query_collab_decode = []
    for item in query_collab_re:
      item = str(item)
      query_collab_decode.append(item)
    logging.info('Data read for query_collab_decode is %s', query_collab_decode)

    query_collab_decode.append(user_nickname)
    logging.info('Data read for query_collab_append is %s', query_collab_decode)

    query_collab_filter = filter(None, query_collab_decode)
    logging.info('Data read for query_collab_filter is %s', query_collab_filter)

    query_value = self.request.get('queryValue') # query_value
    date_created = datetime.today()
    date_lastupdated = datetime.today()
    active_flag = "true"
    random_id = random.randint(1000000000000, 9999999999999)
    unique_query_id = user_nickname + "_" + str(random_id)

    conn = rdbms.connect(instance=_INSTANCE_NAME, database='userPrefs')
    cursor = conn.cursor()
    cursor.execute('INSERT INTO queries (userNickname, queryName, queryDescription, queryValue, dateCreated, dateLastUpdated, activeFlag, uniqueId) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)', (user_nickname, query_name, query_description, query_value, date_created, date_lastupdated, active_flag, unique_query_id))
    conn.commit()

    try:
      for item in query_collab_filter:
        cursor = conn.cursor()
        cursor.execute('INSERT INTO collaborators (uniqueId, userNickname) VALUES (%s, %s)', (unique_query_id, item))
        conn.commit()
    except:
      logging.error('There was an error inserting the values into the collaborators table. query_collaborators =' + str(query_collaborators))

    conn.close()

我终于设法让它工作起来了。看起来正则表达式将列表中的项转换为unicode格式,这是在我添加一些日志时才发现的。我还在列表中添加字符串时出错。谢谢你的指点!下面的代码现在适用于我:

class SaveQueryPage(webapp2.RequestHandler):
  def post(self):
    user = users.get_current_user()
    user_nickname = user.nickname()
    user_email = user.email()

    query_name = self.request.get('queryName')
    query_description = self.request.get('queryDescription')

    query_collab = self.request.get('queryCollab')
    logging.info('Data read for query_collab is %s', query_collab)

    query_collab_re = re.split(r'\s*[,;]\s*', query_collab.strip())
    logging.info('Data read for query_collab_re is %s', query_collab_re)

    query_collab_decode = []
    for item in query_collab_re:
      item = str(item)
      query_collab_decode.append(item)
    logging.info('Data read for query_collab_decode is %s', query_collab_decode)

    query_collab_decode.append(user_nickname)
    logging.info('Data read for query_collab_append is %s', query_collab_decode)

    query_collab_filter = filter(None, query_collab_decode)
    logging.info('Data read for query_collab_filter is %s', query_collab_filter)

    query_value = self.request.get('queryValue') # query_value
    date_created = datetime.today()
    date_lastupdated = datetime.today()
    active_flag = "true"
    random_id = random.randint(1000000000000, 9999999999999)
    unique_query_id = user_nickname + "_" + str(random_id)

    conn = rdbms.connect(instance=_INSTANCE_NAME, database='userPrefs')
    cursor = conn.cursor()
    cursor.execute('INSERT INTO queries (userNickname, queryName, queryDescription, queryValue, dateCreated, dateLastUpdated, activeFlag, uniqueId) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)', (user_nickname, query_name, query_description, query_value, date_created, date_lastupdated, active_flag, unique_query_id))
    conn.commit()

    try:
      for item in query_collab_filter:
        cursor = conn.cursor()
        cursor.execute('INSERT INTO collaborators (uniqueId, userNickname) VALUES (%s, %s)', (unique_query_id, item))
        conn.commit()
    except:
      logging.error('There was an error inserting the values into the collaborators table. query_collaborators =' + str(query_collaborators))

    conn.close()

什么不起作用?你有错误吗?它不会给出预期的结果吗?一个查询有协作者,但是,没有链接,你使用的是RDBMS,我假设是Google SQL云存储?这没有什么意义。而且('somemysql QUERY%s')%(var)也不太安全。我确实在使用谷歌云SQL-因为它是一个内部应用程序,我在现阶段还不太担心安全性。我从queries表中省略了一些属性,以便更容易地消化信息,但是查询和协作者之间存在着适当的关系。我在日志中看到的错误如下:“NoneType”对象不可回溯(最近一次调用last):File“/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/weba这是指哪一行?什么不起作用?你有错误吗?它不会给出预期的结果吗?一个查询有协作者,但是,没有链接,你使用的是RDBMS,我假设是Google SQL云存储?这没有什么意义。而且('somemysql QUERY%s')%(var)也不太安全。我确实在使用谷歌云SQL-因为它是一个内部应用程序,我在现阶段还不太担心安全性。我从queries表中省略了一些属性,以便更容易地消化信息,但是查询和协作者之间存在着适当的关系。我在日志中看到的错误如下:“NoneType”对象不可回溯(最近一次调用last):File“/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/weba这是指哪一行?使用而不是随机谢谢!那就更有意义了!将尝试实现该功能。使用而不是随机。谢谢!那就更有意义了!我们将努力实现这一目标。