【问题标题】:Creating a table using mysql python with variable values使用带有变量值的mysql python创建表
【发布时间】:2021-08-05 07:45:13
【问题描述】:

我正在尝试使用 python-flask 在 MySQL 中创建一个表。表名是我从服务器中提取的“id”参数。我希望这个 id 是我正在创建的表的名称,但是当我尝试这样做时,我收到以下错误:

'mysql.connector.errors.ProgrammingError: 1064 (42000): 你的SQL语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“46490210(用户 varchar(50),消息 varchar(150))”附近使用正确的语法

这是python-sql代码供参考。

#the file name is chat_db.py

def createTable(id):
    cursor = db.cursor()
    cursor.execute("CREATE TABLE IF NOT EXISTS %s (user varchar(50), message varchar(150))",(id,))
    db.commit()

这是 Flask 代码(没有装饰器):

import chat_db as roomdb 
import random

def rand_id():
    return random.randint(10000000,99999999)

def roomTable():
    roomdb.createTable(rand_id())

roomTable()

请帮忙! :)

【问题讨论】:

  • 这在 mysql 中是不允许的。您必须在 tehnumber 或类似之前放一个字母
  • @nbk 这并没有解决我的问题。我在“roomTable”函数中进行了以下更改:roomdb.createTable('a'+str(rand_id()))(在 id 的开头添加了“a”)但我仍然收到以下错误:“mysql.connector.errors.ProgrammingError: 1064 (42000): You您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“a93937637”(用户 varchar(50),消息 varchar(150))附近使用正确的语法。跨度>
  • @nbk 如果我误解了您的解决方案,请参考我在问题中使用的代码提供解决方案。谢谢!

标签: mysql flask mysql-python


【解决方案1】:

mysql 中只允许数字,所以数字前需要一个字母 在我的示例中,我使用了字母 A,但它当然可以是您喜欢的任何文本。

但我不明白你为什么要循环做这样的事情。

def createTable(id):
    cursor = cnx.cursor()
    cursor.execute("CREATE TABLE IF NOT EXISTS A%s (user varchar(50), message varchar(150))",(id,))
    cnx.commit()

【讨论】:

  • 谢谢,这成功了。但是,我很想知道为什么对我的原始代码的这种修改没有成功:roomdb.createTable('a'+str(rand_id()))
  • 您的代码将 '(单引号) 添加到 mysql 不喜欢的文本中,当您有数字时它不喜欢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
  • 2015-06-20
  • 1970-01-01
相关资源
最近更新 更多