应用场景:
我们需要设计一个数据库来保存多个文档中每个文档的关键字。假如我们每个文档字符都超过了1000,取其中出现频率最大的为我们的关键字。
假设每个文档的关键字都超过了300,每一个文件的0-299号存储的是我们的关键字。那我们要建这样一个数据库,手动输入这样的一个表是不现实的,我们只有通过程序来帮我实现这个重复枯燥的操作。
具体的示意图如下所示:
首先图1是我们的原始表格:
图1
这个时候我们需要程序来帮我们完成自动字段的创建和数据的插入。
图2
上图是我们整个表的概况。下面我们就用程序来总结出这样的一个表格是怎么实现的。
''' function description : Add the fields and data dynamicly. data : 2014-08-04 author : Chicho running : python addfileds.py ''' import MySQLdb #connect the database #the argvs based on the database you set. #Generally speaking, you should change the No. of the port 3306 , because it's easy to be attack #localhost = 127.0.0.1 conn = MySQLdb.connect(host = 'localhost', port = 3306, user = 'root', passwd = '*****') curs = conn.cursor() # create a database named addtest #Ensure the program can run multiple times,we should use try...exception try: curs.execute('create database addtest') except: print 'Database addtest exists!' conn.select_db('addtest') # create a table named addfields try: curs.execute('create table addfields(id int PRIMARY KEY NOT NULL,name text)') except: print('The table addfields exists!') # add the fileds try: for i in range(1): sql = "alter table addfields add key%s text" %i curs.execute(sql) except Exception,e: print e for i in range(4): #insert 5 lines sql = "insert into addfields set id=%s" %i curs.execute(sql) sql = "update addfields set name = 'hello%s' where id= %s"%(i,i) curs.execute(sql) for j in range(5): sql = "update addfields set key%s = 'world%s%s' where id=%s"%(j,i,j,i) curs.execute(sql) #this is very important conn.commit() curs.close() conn.close()
记住最后一定要记得最后三行这个语句,否则你的操作不会写入到数据库中。
最后就可以得到我们的结果,如下图所示:
程序的大体实现就是这样。
彩蛋:
1.操作数据库出现的一些错误总结
如果你长时间为队数据库进行操作,再次进行操作的时候可能会出现以下错误:
raise errorclass, errorvalue
OperationalError: (2006, 'MySQL server has gone away')
这个时候对于MySQL server 你要做的就是执行一下下面这个命令
connect your_database
对于在python中的IDLE你需要执行:
conn = MySQLdb.connect(host = 'localhost', port = 3306, user = 'root', passwd = '****') curs = conn.cursor() conn.select_db('addtest')
密码输入你自己数据库中设置的。
2.UnicodeEncodeError: 'latin-1' codec can't encode characters in position
出现上述这个错误的时候可以采用下面这个方法就可以解决。
conn.set_character_set('utf8') curs.execute('set names utf8') curs.execute('SET CHARACTER SET utf8;') curs.execute('SET character_set_connection=utf8;')
conn,curs和本文中参数设置是一样的。

MySQLstringtypesimpactstorageandperformanceasfollows:1)CHARisfixed-length,alwaysusingthesamestoragespace,whichcanbefasterbutlessspace-efficient.2)VARCHARisvariable-length,morespace-efficientbutpotentiallyslower.3)TEXTisforlargetext,storedoutsiderows,

MySQLstringtypesincludeVARCHAR,TEXT,CHAR,ENUM,andSET.1)VARCHARisversatileforvariable-lengthstringsuptoaspecifiedlimit.2)TEXTisidealforlargetextstoragewithoutadefinedlength.3)CHARisfixed-length,suitableforconsistentdatalikecodes.4)ENUMenforcesdatainte

MySQLoffersvariousstringdatatypes:1)CHARforfixed-lengthstrings,2)VARCHARforvariable-lengthtext,3)BINARYandVARBINARYforbinarydata,4)BLOBandTEXTforlargedata,and5)ENUMandSETforcontrolledinput.Eachtypehasspecificusesandperformancecharacteristics,sochoose

TograntpermissionstonewMySQLusers,followthesesteps:1)AccessMySQLasauserwithsufficientprivileges,2)CreateanewuserwiththeCREATEUSERcommand,3)UsetheGRANTcommandtospecifypermissionslikeSELECT,INSERT,UPDATE,orALLPRIVILEGESonspecificdatabasesortables,and4)

ToaddusersinMySQLeffectivelyandsecurely,followthesesteps:1)UsetheCREATEUSERstatementtoaddanewuser,specifyingthehostandastrongpassword.2)GrantnecessaryprivilegesusingtheGRANTstatement,adheringtotheprincipleofleastprivilege.3)Implementsecuritymeasuresl

ToaddanewuserwithcomplexpermissionsinMySQL,followthesesteps:1)CreatetheuserwithCREATEUSER'newuser'@'localhost'IDENTIFIEDBY'password';.2)Grantreadaccesstoalltablesin'mydatabase'withGRANTSELECTONmydatabase.TO'newuser'@'localhost';.3)Grantwriteaccessto'

The string data types in MySQL include CHAR, VARCHAR, BINARY, VARBINARY, BLOB, and TEXT. The collations determine the comparison and sorting of strings. 1.CHAR is suitable for fixed-length strings, VARCHAR is suitable for variable-length strings. 2.BINARY and VARBINARY are used for binary data, and BLOB and TEXT are used for large object data. 3. Sorting rules such as utf8mb4_unicode_ci ignores upper and lower case and is suitable for user names; utf8mb4_bin is case sensitive and is suitable for fields that require precise comparison.

The best MySQLVARCHAR column length selection should be based on data analysis, consider future growth, evaluate performance impacts, and character set requirements. 1) Analyze the data to determine typical lengths; 2) Reserve future expansion space; 3) Pay attention to the impact of large lengths on performance; 4) Consider the impact of character sets on storage. Through these steps, the efficiency and scalability of the database can be optimized.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

SublimeText3 Linux new version
SublimeText3 Linux latest version

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SublimeText3 Mac version
God-level code editing software (SublimeText3)
