【发布时间】:2014-01-10 12:54:00
【问题描述】:
我在 Python 中使用 MySQLdb 模块创建表,但在尝试使用 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)
这会导致以下错误: " 引发错误类,错误值 _mysql_exceptions.ProgrammingError: (1064, "您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取在第 1 行的 ':2013.12.21 (name CHAR(40))' 附近使用的正确语法")
我很确定这可能与字符转义或我的 sql 查询的定义方式有关,但后来进行了大量的谷歌搜索和 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 a-z 字符,这将非常有效。感谢您阅读并道歉,如果这是我错过的显而易见的事情!
【问题讨论】:
-
为什么
time.strftime('%Y-%m-%d').replace("-", ".")不是time.strftime('%Y.%m.%d')? -
我最初使用 datetime.now().date() 然后将其转换为字符串,但 SO 帖子使用 time.strftime('%Y-%m-%d') 和它似乎是一种更好的做事方式。
-
您可以更改格式字符串以提供您需要的格式,而无需任何
replace:docs.python.org/2/library/time.html#time.strftime -
我已经收藏了,谢谢:)!
标签: python scrapy mysql-python