Getting started with mysqldb
Geoffrey L. Wright
geoff.nospam at northernwastes.org
Sat Sep 16 19:32:08 EDT 2000
On Sat, 16 Sep 2000 10:51:32 -0400 (EDT), Michal Wallace
<sabren at manifestation.com> wrote:
>Well, assuming row/currentRow was a result of a cursor.fetchone()
>call, row is not a string, but a tuple (like a list, but it can't be
>changed)
Just discoved the magic of type() in Greg Wallace's post and found
that out. DOH!
>You're getting the problem, because, as you said, currentRow
>isn't a string... but you can make it a string by doing this:
>
>>>> str(row)
>"(1, 'squid')
Wowzers! That's handy. I looked far and wide for a way to do that.
I think my python research skills need improvement.
I was about to do something really horrible -- like this:
---
for row in sel_radgroupreply:
string = ""
for item in row:
if type(item) == type(0):
string = "%s %i," % (string, item)
if type(item) == type(''):
string = "%s '%s'," % (string, item)
---
...where I would then form the insert statement from my string.
>Here's how I'd re-write your code:
>
>##############
>
>cur = yourMySQLConnection.cursor()
>
>sql = "SELECT id, GroupName, Attribute, Value from first_table"
>cur.execute(sql)
>
>for row in cur.fetchall():
> sql = """
> INSERT INTO test_radgroupreply
> (id, GroupName, Attribute, Value)
> VALUES %s
> """ % str(row)
> cur.execute(sql)
>
>##############
Well -- that both much more readable and much faster. The python way
of inserting variable into strings like so:
borogovesState = "mimsy"
string = "All %s were the borogoves" % borogovesState
...stuck me as odd at first. But I think that it actually makes for a
very readable way of doing things. It'll certainly help to keep the
SQL contained in my python code nicely formatted.
>I tend to use "sql", "dbc", "cur", and "row" almost exclusively when
>dealing with databases because it seems to keep the code cleaner. I
>always assign sql on a seperate line (or lines) in case I need to
>print it out to make sure I've built it correctly, or in case I need
>to change it later. Your mileage may vary.. :)
Good to know.
Well, many thanks for the help. The friendly reputation of Pythoneers
is certainly well deserved. :)
>Cheers,
>
>- Michal
//glw
More information about the Python-list
mailing list