第 0002 题:将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中
-----------------------------------------------------------------------------------------------------------
import mysql.connector
import string,random
import re
#生成激活码函数
def generateCode(n):
r=[]
s=string.digits+string.ascii_letters
for i in range(200):
t=''
for j in range(n):
t+=random.choice(s)
r.append(r"'%s'"%t)
print(r[i])
return r
#数据库操作方法,详细见廖雪峰老师教程
conn = mysql.connector.connect(user='root', password='123456', database='test')
cur=conn.cursor()
cur.execute('create table user (id varchar(20) primary key, name varchar(20))')
r=generateCode(8)
i=0
#存入数据库
while i<200:
sql='insert into user (id, name) values (%s, %s)' % (i+1,r[i])
cur.execute(sql)
i+=1
conn.commit()
cur.close()
conn.close()
------------------------------------------------------------------------------------------------------------------------------
在进行数据库的连接写入过程中,出现了很多问题。
1.例如数据库模块不存在。可以看看廖雪峰老师的教程。下面有很多网友给出了解决方法。
2,在数据库数据导入过程中,可能会出现
Traceback (most recent call last):
File "server.py", line 24, in <module>
cur.execute(sql)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35\lib\site-packages\mysql\connector\cursor.py", line 515, in execute
self._handle_result(self._connection.cmd_query(stmt))
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35\lib\site-packages\mysql\connector\connection.py", line 488, in cmd_query
result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35\lib\site-packages\mysql\connector\connection.py", line 395, in _handle_result
raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column 'WF3gRCXd' in 'field list
这个是因为第二个参数的原因。我试了很久。需要把值加上引号。。。所以。代码如上面函数中,输出列表中都是加上引号才成功的