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