首頁  >  問答  >  主體

scrapy - python 操作mysql,按照当前时间建立表,无法创建表..

1.使用python操作mysql,希望使用当前时间建立表名.但是格式化表名报错.

2.代码如下图:

 def __init__(self):
        time1 = datetime.datetime.now().strftime('%Y-%m-%d')
        self._tabname = 'sound_' + time1
        self.conn = MySQLdb.connect(host="localhost", user="root", passwd="ubuntu", db="spider", charset="utf8")
        self.cursor = self.conn.cursor()
        try:
            sql = """CREATE TABLE %s (
                id int PRIMARY KEY AUTO_INCREMENT, Title varchar (255), Albumtitle varchar(255),
                SinglePlayCount VARCHAR(255), Albumscore VARCHAR(255), LikeCount VARCHAR (255),
                CommentsCount VARCHAR (255), TotalPlayCounts VARCHAR (255), Duration VARCHAR (255),
                CreatedTime VARCHAR (255), displayDiscountedPrice VARCHAR (255),
                Nickname VARCHAR (255), category_title VARCHAR (255), trackId VARCHAR (255))
                 )"""
            self.cursor.execute(sql, (self._tabname, ))
        except:
            pass

3.报错截图如下:

4.请教下.如何能格式化表名,让它为当前时间,尝试过format也不行.

5.麻烦提供方法,或者思路都可以.非常感谢!

PHP中文网PHP中文网2741 天前358

全部回覆(2)我來回復

  • 怪我咯

    怪我咯2017-04-18 09:55:01

    資料庫表命名有規範的,應該使用下劃線_來連接單詞,不應該使用-字符的

    1.数据库涉及字符规范
    
    采用26个英文字母(区分大小写)和0-9这十个自然数,加上下划线'_'组成,共63个字符.不能出现其他字符(注释除外).
    注意事项:
    1) 以上命名都不得超过30个字符的系统限制.变量名的长度限制为29(不包括标识字符@).
    2) 数据对象、变量的命名都采用英文字符,禁止使用中文命名.绝对不要在对象名的字符之间留空格.
    3) 小心保留词,要保证你的字段名没有和保留词、数据库系统或者常用访问方法冲突
    5) 保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性.假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了.
    
    
    2.数据库命名规范
    
    数据库,数据表一律使用前缀
    
    正式数据库名使用小写英文以及下划线组成,尽量说明是那个应用或者系统在使用的.比如:
    
    web_19floor_net
    web_car
    
    备份数据库名使用正式库名加上备份时间组成,如:
    
    web_19floor_net_20070403
    web_car_20070403
    
    3.数据库表命名规范
    
    数据表名使用小写英文以及下划线组成,尽量说明是那个应用或者系统在使用的.
    相关应用的数据表使用同一前缀,如论坛的表使用cdb_前缀,博客的数据表使用supe_前缀,前缀名称一般不超过5字
    比如:
    
    web_user
    web_group
    supe_userspace
    

    參考資料:
    連結描述

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:55:01

    1. time1 改用 '%Y_%m_%d' 格式;

    2. trackId VARCHAR (255)) 这里多了一个 )

    回覆
    0
  • 取消回覆