【问题标题】:MariaDB dynamically adding columns to existing tableMariaDB 将列动态添加到现有表
【发布时间】:2018-06-07 16:17:24
【问题描述】:

我有一个 python scrypt,可以从网络上查找数据。有时这可能需要将新表添加到现有表中。我正在使用 pymysql 并且我尝试了一些在网上找到的示例,但不幸的是我一直遇到错误。似乎只是我的 SQL 查询有问题,但我不知道如何解决这个问题。

for j in range(1, counter + 1):
    if missing_matrix[j] !=  0:
        print("adding: ", missing_matrix[j])
        connection = create_engine('mysql+pymysql://user:pwd@server:3306/db').connect()
        print ('//////////////////// connected to mysql:')
        query = ("ALTER TABLE price_usd "
                "ADD IF NOT EXISTS new DOUBLE "
                "VALUES (%s)")
        query_data = (missing_matrix[j])
        connection.execute(query, query_data)

        connection.close()

return

一旦代码工作,我计划在整个迭代中建立一次连接。

添加后,该列将包含数值。

我得到的错误是整张报纸的红线,但这篇文章看起来最值得注意:

sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError) (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'VALUES ('ballpoint pen')' at line 1") [SQL: 'ALTER TABLE price_usd ADD IF NOT EXISTS new DOUBLE VALUES (%s)'] [parameters: ('ballpoint pen',)]

【问题讨论】:

  • 请同时包含准确的错误输出。
  • 如果我是你,我会先开始检查 alter table 上的 mysql 手册。您的语法甚至不符合要求的语法。
  • 感谢您的回复,我添加了错误代码。
  • 你使用的是mariadb,而不是mysql。请相应地标记您的问题。
  • 对不起,我认为 mariaDB 和 mysql 非常相似,在语法上也是如此,仅供参考,我是通过 xampp 下载的,因为它配备了 mysql。我检查了默认手册,但其中没有任何内容可以怀疑我的查询是错误的。如我所见,它接收要添加的名称。

标签: python python-3.x mariadb mysql-python pymysql


【解决方案1】:

我搞定了!

#   adding missing entities to mysql database
connection = create_engine('mysql+pymysql://user:pwd@server:3306/db').connect()
for j in range(1, counter + 1):
    if missing_matrix[j] !=  0:            
        query1 = ("ALTER TABLE price_usd ADD IF NOT EXISTS %s DOUBLE ") %(missing_matrix[j])
        connection.execute(query1)
Connection.close

我遇到的问题是我的列名中有空格。我写了另一个用 _ 替换这些空格的函数,然后它运行良好。

【讨论】:

  • 您可以使用反引号在标识符中使用空格:create database `drop database`;
  • 不过现在完美运行,稳定运行了几天
猜你喜欢
  • 1970-01-01
  • 2014-06-14
  • 1970-01-01
  • 2014-09-06
  • 1970-01-01
  • 2020-08-04
  • 2017-01-09
  • 2014-12-12
  • 1970-01-01
相关资源
最近更新 更多