scrapy - python 操作mysql,按照当前时间建立表,无法创建表..
PHP中文网
PHP中文网 2017-04-18 09:53:01
0
2
372

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中文网

认证高级PHP讲师

Antworte allen(2)
刘奇

数据库表命名有规范的,应该使用下划线_来连接单词,不应该使用-字符的

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

参考资料:
链接描述

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

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage