MySQLdb - Таблицы именования с использованием модуля datetime в Python
Я использую модуль MySQLdb в Python для создания таблицы, но я столкнулся с некоторыми проблемами при попытке назвать его с помощью модуля datetime.
class DbPipeline(object):
def __init__(self):
vendor = "vendorname"
curDate = time.strftime('%Y-%m-%d').replace("-", ".")
tableName = vendor + ":" + curDate
# connect to the database
self.conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='', db='dbname', charset="utf8", use_unicode=True)
self.cursor = self.conn.cursor()
#create a new table
sql = "CREATE TABLE %s (name CHAR(40))" %tableName
self.cursor.execute(sql)
Это приводит к следующей ошибке: "повысить errorclass, errorvalue _mysql_exceptions.ProgrammingError: (1064, " У вас есть ошибка в синтаксисе SQL; обратитесь к руководству, соответствующему вашей версии сервера MySQL, на предмет правильного синтаксиса, который будет использоваться рядом ":2013.12.21 (название CHAR(40))'в строке 1")
Я почти уверен, что это может быть связано с экранированием символов или определением моего sql-запроса, но после множества сессий Googling и REPL мне не удалось это исправить.
Некоторый код из REPL:
vendor = "vendorname"
curDate = time.strftime('%Y-%m-%d').replace("-", ".")
tableName = vendor + ":" + curDate
sql = "CREATE TABLE %s (name CHAR(40))" %tableName
sql
'CREATE TABLE vendorname:2013.12.21 (name CHAR(40))'
И последнее замечание: это прекрасно работает, если вы просто назначаете%tableName az символов. Спасибо за чтение и извинения, если это что-то ослепительно очевидно, я пропустил!
1 ответ
According to the MySQL documentation:
Имена базы данных и таблицы не могут содержать символы "/", "\", "." Или символы, которые не допускаются в именах файлов.
Пытаться:
curDate = time.strftime('%Y%m%d')
tableName = "%s_%s" % (vendor, curDate)
Например, "vendorname_20131221"