datafaker
datafaker copied to clipboard
ValueError: empty range for randrange() (11,1, -10)
(venv366-64bit-mysql) D:\012_python3\datafaker-master>datafaker mysql mysql+mysqldb://api_test:[email protected]:3306/mailserver virtual_users 2 Exception in thread Thread-1: Traceback (most recent call last): File "c:\python366-64bit\Lib\threading.py", line 916, in _bootstrap_inner self.run() File "c:\python366-64bit\Lib\threading.py", line 864, in run self._target(*self._args, **self.kwargs) File "D:\evn\venv366-64bit-mysql\lib\site-packages\datafaker\dbs\basedb.py", line 42, in fake_data columns = self.fake_column() File "D:\evn\venv366-64bit-mysql\lib\site-packages\datafaker\dbs\basedb.py", line 53, in fake_column columns.append(self.fakedata.do_fake(item['cmd'], item['args'])) File "D:\evn\venv366-64bit-mysql\lib\site-packages\datafaker\fakedata.py", line 215, in do_fake return method(*args) File "D:\evn\venv366-64bit-mysql\lib\site-packages\datafaker\fakedata.py", line 40, in fake_int return self.faker.random_int(min, max) File "D:\evn\venv366-64bit-mysql\lib\site-packages\faker\providers_init.py", line 106, in random_int return self.generator.random.randrange(min, max + 1, step) File "D:\evn\venv366-64bit-mysql\lib\random.py", line 199, in randrange raise ValueError("empty range for randrange() (%d,%d, %d)" % (istart, istop, width)) ValueError: empty range for randrange() (11,1, -10)
你好 给下表schema
From: GaryLi Date: 2019-10-30 17:54 To: gangly/datafaker CC: huanjoyous; Author Subject: Re: [gangly/datafaker] ValueError: empty range for randrange() (11,1, -10) (#7) 你好 给下表schema — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
可以参考下使用元文件方法:https://github.com/gangly/datafaker/blob/master/doc/%E4%BD%BF%E7%94%A8%E4%B8%BE%E4%BE%8B.md
id||int||自增id[:inc(id)] name||varchar(20)||学生名字 school||varchar(20)||学校名字[:enum(file://names.txt)] nickname||varchar(20)||学生小名[:enum(鬼泣, 高小王子, 歌神, 逗比)] age||int||学生年龄 class_num||int||班级人数[:int(10, 100)] score||decimal(4,2)||成绩[:decimal(4,2,1)] phone||int(20)||电话号码[:phone_number] email||varchar(64)||家庭网络邮箱[:email] ip||varchar(32)||IP地址[:ipv4] address||text||家庭地址[:address]
你好~作者~github上的demo测试不了,咋搞呢?
------------------ Original ------------------ From: GaryLi <[email protected]> Date: Wed,Oct 30,2019 6:06 PM To: gangly/datafaker <[email protected]> Cc: huanjoyous <[email protected]>, Author <[email protected]> Subject: Re: [gangly/datafaker] ValueError: empty range for randrange() (11,1, -10) (#7)
可以参考下使用元文件方法:https://github.com/gangly/datafaker/blob/master/doc/%E4%BD%BF%E7%94%A8%E4%B8%BE%E4%BE%8B.md
id||int||自增id[:inc(id)] name||varchar(20)||学生名字 school||varchar(20)||学校名字[:enum(file://names.txt)] nickname||varchar(20)||学生小名[:enum(鬼泣, 高小王子, 歌神, 逗比)] age||int||学生年龄 class_num||int||班级人数[:int(10, 100)] score||decimal(4,2)||成绩[:decimal(4,2,1)] phone||int(20)||电话号码[:phone_number] email||varchar(64)||家庭网络邮箱[:email] ip||varchar(32)||IP地址[:ipv4] address||text||家庭地址[:address]
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
5.2例子可能有些bug,用5.3例子中使用方法吧 5.3 从本地文件meta.txt中读取元数据,以,,分隔符构造10条数据,打印在屏幕上
按照mysql表结构写个元素数据文件,然后指定--meta参数 datafaker rdb mysql+mysqldb://root:root@localhost:3600/test stu 10 --meta meta.txt
好的。明天我再试试。多谢作者哈
发自我的iPhone
------------------ Original ------------------ From: GaryLi <[email protected]> Date: Wed,Oct 30,2019 6:23 PM To: gangly/datafaker <[email protected]> Cc: huanjoyous <[email protected]>, Author <[email protected]> Subject: Re: [gangly/datafaker] ValueError: empty range for randrange() (11,1, -10) (#7)
RT:屏幕打印有,写入数据报错了,py3.6.5不支持?
[96, 'SFiRbZYilWrWadBDnLed', 'C:\Users\Desktop\test\names.txt', '逗比', 63, 77, 8.34, '15719298857', '[email protected]', '160.143.224.32', '安徽省杨市吉区吴路A座 122793'] [94, 'ZVKjBkApVeGzp', 'C:\Users\Desktop\test\names.txt', '歌神', 67, 92, 77.68, '13494852157', '[email protected]', '183.183.178.187', '北京市云市西夏韩街n座 459345'] [95, 'WfyCMzLYefbHlvN', 'C:\Users\\Desktop\test\names.txt', '鬼泣', 23, 69, 24.78, '15746325637', '[email protected]', '169.249.200.153', '宁夏回族自治区兴安盟县牧野桂街C座 459630'] [98, 'OuQmuCoTMU', 'C:\Users\\Desktop\test\names.txt', '鬼泣', 62, 23, 8.48, '13459395538', '[email protected]', '198.50.198.89', '吉林省刚县牧野杜街f座 246243'] [97, 'cfKPjseWuz', 'C:\Users\\Desktop\test\names.txt', '鬼泣', 74, 35, 3.9, '15957216050', '[email protected]', '169.253.109.59', '山东省阳市南溪兰州街R座 143357'] [99, 'hPnRFgbcUwSk', 'C:\Users\\Desktop\test\names.txt', '逗比', 35, 20, 16.48, '13357756972', '[email protected]', '192.175.4.69', '甘肃省丽丽市长寿张家港路n座 753250'] time used: 3.058 s
(venv366-64bit-mysql) C:\Users>datafaker rdb mysql+mysqldb://api_test:[email protected]:3306/test stu 10 --meta C:\Users\Desktop\test\meta.txt Exception in thread Thread-2: Traceback (most recent call last): File "c:\python366-64bit\Lib\threading.py", line 916, in _bootstrap_inner self.run() File "c:\python366-64bit\Lib\threading.py", line 864, in run self._target(*self._args, **self._kwargs) File "D:\evn\venv366-64bit-mysql\lib\site-packages\datafaker\dbs\basedb.py", line 96, in save self.save_data(lines) File "D:\evn\venv366-64bit-mysql\lib\site-packages\datafaker\dbs\rdbdb.py", line 32, in save_data self.session.execute(sql) File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\orm\session.py", line 1269, in execute clause, params or {} File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 988, in execute return meth(self, multiparams, params) File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\sql\elements.py", line 287, in _execute_on_connection return connection._execute_clauseelement(self, multiparams, params) File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1107, in _execute_clauseelement distilled_params, File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1253, in _execute_context e, statement, parameters, cursor, context File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1475, in _handle_dbapi_exception util.reraise(*exc_info) File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\util\compat.py", line 153, in reraise raise value File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1249, in _execute_context cursor, statement, parameters, context File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\default.py", line 552, in do_execute cursor.execute(statement, parameters) File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\cursors.py", line 191, in execute query = query.encode(db.encoding) UnicodeEncodeError: 'latin-1' codec can't encode characters in position 147-150: ordinal not in range(256)
time used: 0.691 s
From: GaryLi Date: 2019-10-30 18:05 To: gangly/datafaker CC: huanjoyous; Author Subject: Re: [gangly/datafaker] ValueError: empty range for randrange() (11,1, -10) (#7) 可以参考下使用元文件方法:https://github.com/gangly/datafaker/blob/master/doc/%E4%BD%BF%E7%94%A8%E4%B8%BE%E4%BE%8B.md id||int||自增id[:inc(id)] name||varchar(20)||学生名字 school||varchar(20)||学校名字[:enum(file://names.txt)] nickname||varchar(20)||学生小名[:enum(鬼泣, 高小王子, 歌神, 逗比)] age||int||学生年龄 class_num||int||班级人数[:int(10, 100)] score||decimal(4,2)||成绩[:decimal(4,2,1)] phone||int(20)||电话号码[:phone_number] email||varchar(64)||家庭网络邮箱[:email] ip||varchar(32)||IP地址[:ipv4] address||text||家庭地址[:address] — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
检查下数据表编码是不是utf8
确定是utf8
mysql> show variables like '%char%'; +--------------------------+-----------------------------------------+ | Variable_name | Value | +--------------------------+-----------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /mysql/mysql-5.7.28/share/charsets/ | +--------------------------+-----------------------------------------+ 8 rows in set (0.00 sec)
mysql> show create table stu;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| stu | CREATE TABLE stu
(
id
int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
name
varchar(20) NOT NULL COMMENT '学生名字',
school
varchar(20) NOT NULL COMMENT '学校名字',
nickname
varchar(20) NOT NULL COMMENT '学生小名',
age
int(11) NOT NULL COMMENT '学生年龄',
class_num
int(11) NOT NULL COMMENT '班级人数',
score
decimal(4,2) NOT NULL COMMENT '成绩',
phone
int(20) NOT NULL COMMENT '电话号码',
email
varchar(64) DEFAULT NULL COMMENT '家庭网络邮箱',
ip
varchar(32) DEFAULT NULL COMMENT 'IP地址',
address
text COMMENT '家庭地址',
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
From: GaryLi Date: 2019-10-31 09:25 To: gangly/datafaker CC: huanjoyous; Author Subject: Re: [gangly/datafaker] ValueError: empty range for randrange() (11,1, -10) (#7) 检查下数据表编码是不是utf8 — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
已经更新文档,请按照文档重新执行。 需要重新建表、写meta文件 datafaker rdb mysql+mysqldb://root:root@localhost:3306/test?charset=utf8 stu 10 --meta meta.txt
RT:datafaker 0.5.1 所有的表都是重建
执行的你的脚本: create table stu ( id int unsigned auto_increment primary key COMMENT '自增id', name varchar(20) not null comment '学生名字', school varchar(20) not null comment '学校名字', nickname varchar(20) not null comment '学生小名', age int not null comment '学生年龄', class_num int not null comment '班级人数', score decimal(4,2) not null comment '成绩', phone bigint not null comment '电话号码', email varchar(64) comment '家庭网络邮箱', ip varchar(32) comment 'IP地址', address text comment '家庭地址' ) engine=InnoDB default charset=utf8;
报错如下:
(venv366-64bit-mysql) D:\012_python3\datafaker-master>datafaker rdb mysql+mysqldb://api_test:[email protected]:3306/test?charset=utf8 stu 10 --meta C:\Users\Desktop\test\meta.txt Exception in thread Thread-2: Traceback (most recent call last): File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1249, in _execute_context cursor, statement, parameters, context File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\default.py", line 552, in do_execute cursor.execute(statement, parameters) File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\cursors.py", line 209, in execute res = self._query(query) File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\cursors.py", line 315, in _query db.query(q) File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\connections.py", line 226, in query _mysql.connection.query(self, query) MySQLdb._exceptions.IntegrityError: (1062, "Duplicate entry '1' for key 'PRIMARY'")
The above exception was the direct cause of the following exception:
Traceback (most recent call last): File "c:\python366-64bit\Lib\threading.py", line 916, in _bootstrap_inner self.run() File "c:\python366-64bit\Lib\threading.py", line 864, in run self._target(*self._args, **self._kwargs) File "D:\evn\venv366-64bit-mysql\lib\site-packages\datafaker\dbs\basedb.py", line 96, in save self.save_data(lines) File "D:\evn\venv366-64bit-mysql\lib\site-packages\datafaker\dbs\rdbdb.py", line 32, in save_data self.session.execute(sql) File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\orm\session.py", line 1269, in execute clause, params or {} File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 988, in execute return meth(self, multiparams, params) File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\sql\elements.py", line 287, in _execute_on_connection return connection._execute_clauseelement(self, multiparams, params) File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1107, in _execute_clauseelement distilled_params, File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1253, in _execute_context e, statement, parameters, cursor, context File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1473, in _handle_dbapi_exception util.raise_from_cause(sqlalchemy_exception, exc_info) File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\util\compat.py", line 398, in raise_from_cause reraise(type(exception), exception, tb=exc_tb, cause=cause) File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\util\compat.py", line 152, in reraise raise value.with_traceback(tb) File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1249, in _execute_context cursor, statement, parameters, context File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\default.py", line 552, in do_execute cursor.execute(statement, parameters) File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\cursors.py", line 209, in execute res = self._query(query) File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\cursors.py", line 315, in _query db.query(q) File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\connections.py", line 226, in query _mysql.connection.query(self, query) sqlalchemy.exc.IntegrityError: (MySQLdb._exceptions.IntegrityError) (1062, "Duplicate entry '1' for key 'PRIMARY'") [SQL: insert into stu (id,name,school,nickname,age,class_num,score,phone,email,ip,address) values (0,'BihrNeBlHqjBdXaJ','gj','鬼泣',0,46,10.95,18955264102,'[email protected]','206.226.233.28','四川省佛山县清河孙 路d座 145073'),(1,'YPuCwuSvyS','zGYexxNdD','逗比',18,85,81.23,15124335346,'[email protected]','203.101.109.135','云南省呼和浩特市白云武街Z座 463500'),(2,'HnAuMDAFpmcg','xDbPlQUReC','鬼泣',74,65,83.67,13207551792 ,'[email protected]','198.48.127.71','黑龙江省林市长寿福州路z座 840762'),(3,'TzJjBOddPzecLi','JZPXPVqC','高小王子',52,45,32.51,18174405188,'[email protected]','198.51.120.242','重庆市嘉禾县友好马鞍山街R座 6388 43'),(4,'dvme','IItzAbihSXOdmPBk','鬼泣',69,78,91.32,15920607958,'[email protected]','3.223.213.121','广东省淑珍县锡山荆门街w座 641784'),(5,'WZInAzqhoQtqqFgYos','eQzBYkQFpVluX','高小王子',98,68,20.13,18284676675 ,'[email protected]','192.50.32.96','香港特别行政区荆门市长寿鹿街S座 510783'),(6,'mAefWlhA','DwKWiINWOnA','高小王子',78,31,60.98,14792577103,'[email protected]','100.17.197.23','山东省石家庄县金平刘路K座 784833'),(7,'XmfpkILwVND','abuaJTTjyF','逗比',58,100,26.53,18231254224,'[email protected]','203.185.175.88','广西壮族自治区玉梅县海港邵街A座 563100'),(8,'xrYqkgSOOCr','dGhMcoEkdJAHZw','歌神',32,52,2.54,15313355 703,'[email protected]','203.0.52.222','湖南省琳市上街郭街P座 697599'),(9,'jrx','UmFI','逗比',53,83,17.79,15381584126,'[email protected]','203.66.219.253','贵州省林县牧野兴安盟路B座 176888')] (Background on this error at: http://sqlalche.me/e/gkpj)
time used: 1.015 s
(venv366-64bit-mysql) D:\012_python3\datafaker-master>datafaker --version 0.5.1
From: GaryLi Date: 2019-10-31 14:46 To: gangly/datafaker CC: huanjoyous; Author Subject: Re: [gangly/datafaker] ValueError: empty range for randrange() (11,1, -10) (#7) 已经更新文档,请按照文档重新执行。 需要重新建表、写meta文件 datafaker rdb mysql+mysqldb://root:root@localhost:3306/test?charset=utf8 stu 10 --meta meta.txt — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
是自增字段id重复报错
meta.txt文件内容为: id||int||自增id[:inc(id,1)]
好像不是是自增字段id重复报错
我把数据类型的长度增大了 数据插入了10条数据,还是有错误,麻烦看一下,这个又是什么问题呢?
(venv366-64bit-mysql) D:\012_python3\datafaker-master>datafaker rdb mysql+mysqldb://api_test:[email protected]:3306/test?charset=utf8 stu 10 --meta C:\Users\Desktop\test\meta.txt Exception in thread Thread-2: Traceback (most recent call last): File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1249, in _execute_context cursor, statement, parameters, context File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\default.py", line 552, in do_execute cursor.execute(statement, parameters) File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\cursors.py", line 209, in execute res = self._query(query) File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\cursors.py", line 315, in _query db.query(q) File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\connections.py", line 226, in query _mysql.connection.query(self, query) MySQLdb._exceptions.DataError: (1406, "Data too long for column 'school' at row 1")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "c:\python366-64bit\Lib\threading.py", line 916, in _bootstrap_inner
self.run()
File "c:\python366-64bit\Lib\threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\datafaker\dbs\basedb.py", line 96, in save
self.save_data(lines)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\datafaker\dbs\rdbdb.py", line 32, in save_data
self.session.execute(sql)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\orm\session.py", line 1269, in execute
clause, params or {}
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 988, in execute
return meth(self, multiparams, params)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\sql\elements.py", line 287, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1107, in _execute_clauseelement
distilled_params,
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1253, in _execute_context
e, statement, parameters, cursor, context
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1473, in _handle_dbapi_exception
util.raise_from_cause(sqlalchemy_exception, exc_info)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\util\compat.py", line 398, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\util\compat.py", line 152, in reraise
raise value.with_traceback(tb)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1249, in _execute_context
cursor, statement, parameters, context
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\default.py", line 552, in do_execute
cursor.execute(statement, parameters)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\cursors.py", line 209, in execute
res = self._query(query)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\cursors.py", line 315, in _query
db.query(q)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\connections.py", line 226, in query
_mysql.connection.query(self, query)
sqlalchemy.exc.DataError: (MySQLdb._exceptions.DataError) (1406, "Data too long for column 'school' at row 1")
[SQL: insert into stu (id,name,school,nickname,age,class_num,score,phone,email,ip,address) values (1,'EcsqAIgWm','C:\Users\Desktop\test\names.txt','逗比',52,40,92.65,18240637175,'[email protected]','
198.55.25.107','河南省海门县城东郭路C座 388904'),(2,'gkRiyDZijhD','C:\Users\Desktop\test\names.txt','歌神',26,83,43.46,13074714267,'[email protected]','169.239.131.249','湖南省明市高明陶路J座 582195'
),(3,'xDCvHbjHlDTugEShW','C:\Users\Desktop\test\names.txt','逗比',72,85,94.61,14512809067,'[email protected]','203.1.55.194','青海省桂珍县友好佛山路y座 770000'),(4,'mlpTJahNBwP','C:\Users
Desktop\test\names.txt','逗比',78,77,72.97,13435749548,'[email protected]','198.51.96.178','江苏省鑫县长寿余街X座 949976'),(5,'GQnrOYdfFVNAnPJvltCJ','C:\Users\Desktop\test\names.txt','鬼泣',8,98,37.
52,13061520972,'[email protected]','192.1.196.42','云南省红霞市南溪萧街l座 458674'),(6,'Ediffa','C:\Users\Desktop\test\names.txt','鬼泣',23,36,75.2,15382469099,'[email protected]','192.94.173.182'
,'安徽省淑华市东丽吕街n座 127944'),(7,'kwszWLqQJoMTjnlw','C:\Users\Desktop\test\names.txt','歌神',26,88,91.29,13309436490,'[email protected]','114.151.14.9','安徽省岩县东丽王路r座 210758'),(8,'AxfxTcQ
SQyAYpPC','C:\Users\Desktop\test\names.txt','逗比',2,85,9.42,15536881271,'[email protected]','192.0.163.183','江苏省明县房山银川路x座 185845'),(9,'xMKjJJ','C:\Users\Desktop\test\names.txt','
逗比',40,35,99.54,18522388381,'[email protected]','169.201.128.129','台湾省玉华市兴山重庆路W座 313792'),(10,'AenPJsHMG','C:\Users\Desktop\test\names.txt','逗比',21,48,36.48,14705395771,'yena@yahoo.
com','198.51.202.13','广东省辛集市大兴王街B座 487560')]
(Background on this error at: http://sqlalche.me/e/9h9h)
time used: 0.773 s
(venv366-64bit-mysql) D:\012_python3\datafaker-master>datafaker rdb mysql+mysqldb://api_test:[email protected]:3306/test?charset=utf8 stu 10 --meta C:\Users\Desktop\test\meta.txt insert 10 records time used: 0.662 s
From: GaryLi Date: 2019-10-31 15:26 To: gangly/datafaker CC: huanjoyous; Author Subject: Re: [gangly/datafaker] ValueError: empty range for randrange() (11,1, -10) (#7) 是自增字段id重复报错 meta.txt文件内容为: id||int||自增id[:inc(id,1)] — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
1,学校的没有随机写进数据库?? 2,不能重复执行datafaker rdb mysql+mysqldb://api_test:[email protected]:3306/test?charset=utf8 stu 100 --meta C:\Users\huanjoyous\Desktop\test\meta.txt 否则会报错么?
From: [email protected] Date: 2019-10-31 15:43 To: gangly/datafaker Subject: Re: Re: [gangly/datafaker] ValueError: empty range for randrange() (11,1, -10) (#7) 好像不是是自增字段id重复报错
我把数据类型的长度增大了 数据插入了10条数据,还是有错误,麻烦看一下,这个又是什么问题呢?
(venv366-64bit-mysql) D:\012_python3\datafaker-master>datafaker rdb mysql+mysqldb://api_test:[email protected]:3306/test?charset=utf8 stu 10 --meta C:\Users\Desktop\test\meta.txt Exception in thread Thread-2: Traceback (most recent call last): File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1249, in _execute_context cursor, statement, parameters, context File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\default.py", line 552, in do_execute cursor.execute(statement, parameters) File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\cursors.py", line 209, in execute res = self._query(query) File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\cursors.py", line 315, in _query db.query(q) File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\connections.py", line 226, in query _mysql.connection.query(self, query) MySQLdb._exceptions.DataError: (1406, "Data too long for column 'school' at row 1")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "c:\python366-64bit\Lib\threading.py", line 916, in _bootstrap_inner
self.run()
File "c:\python366-64bit\Lib\threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\datafaker\dbs\basedb.py", line 96, in save
self.save_data(lines)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\datafaker\dbs\rdbdb.py", line 32, in save_data
self.session.execute(sql)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\orm\session.py", line 1269, in execute
clause, params or {}
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 988, in execute
return meth(self, multiparams, params)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\sql\elements.py", line 287, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1107, in _execute_clauseelement
distilled_params,
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1253, in _execute_context
e, statement, parameters, cursor, context
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1473, in _handle_dbapi_exception
util.raise_from_cause(sqlalchemy_exception, exc_info)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\util\compat.py", line 398, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\util\compat.py", line 152, in reraise
raise value.with_traceback(tb)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\base.py", line 1249, in _execute_context
cursor, statement, parameters, context
File "D:\evn\venv366-64bit-mysql\lib\site-packages\sqlalchemy\engine\default.py", line 552, in do_execute
cursor.execute(statement, parameters)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\cursors.py", line 209, in execute
res = self._query(query)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\cursors.py", line 315, in _query
db.query(q)
File "D:\evn\venv366-64bit-mysql\lib\site-packages\MySQLdb\connections.py", line 226, in query
_mysql.connection.query(self, query)
sqlalchemy.exc.DataError: (MySQLdb._exceptions.DataError) (1406, "Data too long for column 'school' at row 1")
[SQL: insert into stu (id,name,school,nickname,age,class_num,score,phone,email,ip,address) values (1,'EcsqAIgWm','C:\Users\Desktop\test\names.txt','逗比',52,40,92.65,18240637175,'[email protected]','
198.55.25.107','河南省海门县城东郭路C座 388904'),(2,'gkRiyDZijhD','C:\Users\Desktop\test\names.txt','歌神',26,83,43.46,13074714267,'[email protected]','169.239.131.249','湖南省明市高明陶路J座 582195'
),(3,'xDCvHbjHlDTugEShW','C:\Users\Desktop\test\names.txt','逗比',72,85,94.61,14512809067,'[email protected]','203.1.55.194','青海省桂珍县友好佛山路y座 770000'),(4,'mlpTJahNBwP','C:\Users
Desktop\test\names.txt','逗比',78,77,72.97,13435749548,'[email protected]','198.51.96.178','江苏省鑫县长寿余街X座 949976'),(5,'GQnrOYdfFVNAnPJvltCJ','C:\Users\Desktop\test\names.txt','鬼泣',8,98,37.
52,13061520972,'[email protected]','192.1.196.42','云南省红霞市南溪萧街l座 458674'),(6,'Ediffa','C:\Users\Desktop\test\names.txt','鬼泣',23,36,75.2,15382469099,'[email protected]','192.94.173.182'
,'安徽省淑华市东丽吕街n座 127944'),(7,'kwszWLqQJoMTjnlw','C:\Users\Desktop\test\names.txt','歌神',26,88,91.29,13309436490,'[email protected]','114.151.14.9','安徽省岩县东丽王路r座 210758'),(8,'AxfxTcQ
SQyAYpPC','C:\Users\Desktop\test\names.txt','逗比',2,85,9.42,15536881271,'[email protected]','192.0.163.183','江苏省明县房山银川路x座 185845'),(9,'xMKjJJ','C:\Users\Desktop\test\names.txt','
逗比',40,35,99.54,18522388381,'[email protected]','169.201.128.129','台湾省玉华市兴山重庆路W座 313792'),(10,'AenPJsHMG','C:\Users\Desktop\test\names.txt','逗比',21,48,36.48,14705395771,'yena@yahoo.
com','198.51.202.13','广东省辛集市大兴王街B座 487560')]
(Background on this error at: http://sqlalche.me/e/9h9h)
time used: 0.773 s
(venv366-64bit-mysql) D:\012_python3\datafaker-master>datafaker rdb mysql+mysqldb://api_test:[email protected]:3306/test?charset=utf8 stu 10 --meta C:\Users\Desktop\test\meta.txt insert 10 records time used: 0.662 s
From: GaryLi Date: 2019-10-31 15:26 To: gangly/datafaker CC: huanjoyous; Author Subject: Re: [gangly/datafaker] ValueError: empty range for randrange() (11,1, -10) (#7) 是自增字段id重复报错 meta.txt文件内容为: id||int||自增id[:inc(id,1)] — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
可能是names.txt行数不够多,没能随机获取 id||int||自增id[:inc(id,1)]表示从1开始每次增长1,若要重复执行,需要每次修改开始值,不然数据库主键会报错。 比如 写入10条数据后,改为id||int||自增id[:inc(id,11)],再运行
建议多读下后面的数据构造规则文档
元数据文件:学校字段像这样写 school||varchar(20)||学校名字[:enum(file://d:\tmp\data\names.txt)]
元数据文件: code||int(10)||编号 这样子都会报错,都必须得加上规则吧: code||int(10)||编号[:int(1,999999)]
元数据文件: code||int(10)||编号 这样子都会报错,都必须得加上规则吧: code||int(10)||编号[:int(1,999999)]
试了下,改成 code||int(0,10)||编号 也可以