MySQLdb syntax issues - HELP

John Nagle nagle at animats.com
Mon Dec 17 13:25:08 EST 2007


Luke wrote:
> Bruno Desthuilliers wrote:
> 
>> Luke a écrit :
>  (snip)   
>>>     cursor.execute("""
>>>         CREATE TABLE %s
>>>         (
>>>          name     CHAR(40),
>>>          gender   CHAR(40),
>>>          job      CHAR(40),
>>>          level    TEXT,
>>>          str      TEXT,
>>>          dex      TEXT,
>>>          intel    TEXT,
>>>          cha      TEXT,
>>>          luc      TEXT
>>>         )
>>>     """ % CharAccount)
>> Err... Are you sure you want a new table here ?
>  (snip)
> 
> yes, thats the easier way i can think of for now since i am so new to SQL,
> eventually im sure i will put all the characters into one larger table
> though... but for now i just dont feal like figuring out how to scan the
> table for the records i need based on name of character... ill save that
> for later. (unless there is a very easy way to do it that doesnt require
> re)

     That's the whole point of SQL.  You write a SELECT statement to
extract the records you want.  A SELECT statement can select on
multiple conditions in one statement, and this is done very efficiently.
Just add a "characcount" field to your record, use one database,
and use select statements like

	cursor.execute("SELECT name, job FROM gamecharacters WHERE characcout=%", 
(charAccount,))

     and MySQL will do the rest.

     Your database searches will go much faster if you add some indexes.
Like

	INDEX characcount,
	INDEX name

And if you use add

	UNIQUE INDEX name

no two characters can have the same name, even if they're from different
accounts.  If you wanted to allow duplicate names from the same account,
you could write

	UNIQUE INDEX (name,characcount)

which requires that the combo of name and characcount be unique.
With that rule in the database, an INSERT that tries to insert
a duplicate name will raise an exception.

You're on the right track; you just need to understand more of what MySQL
can do for you.  Which is quite a lot.


					John Nagle



More information about the Python-list mailing list