On 2012/11/7 11:36, Dave Angel wrote:
On 11/06/2012 10:14 PM, jack wrote:
I have three tables:
What's a table? I'll assume you're using Python, but what version, and
what extra libraries do you have installed ? At least show your import
statements, so we might have a chance at guessing. I'll assume the db
stands for database, but what database, or what library??? if it really
is a database question, and you specify what library you're using, then
maybe somebody who uses that will jump in.
yeah, I'm sorry for that I didn't offer enough information about my question.
table1
|———————|
| id | f1 |
|———————|

table2
|———————|
| id | f2 |
|———————|

table3
|———————|
| id | f3 |
|———————|


I want define a function to insert records to someone,but I don't know
how to specify a field name dynamically.
I had a try like this

/ def insert_record(table, field, goods)://
// return db.insert(table, field=goods//)/
or
/ def insert_record(table, **kv)://
// return db.insert(table, **kv)/

but it does not works

That's not much of a clue. Do you mean you get an exception? If so,
paste it into a message, the full traceback. Or you mean it returns the
wrong data? Or it crashes your OS?

My first guess would be that those slashes are causing syntax errors.
But if that's a bug in your OS's copy/paste, then I'd say you have
indentation problems. Or maybe these are not just functions, but methods
inside a class. And in that case, I might guess that you're missing the
self argument, and therefore getting an exception of wrong number of
arguments.

# I want to insert something to a database using web.py-0.37 & mysql.
/    import web//
// db = web.database(dbn='mysql', user='username', passwd='password', db='test'//)/

# I found the tables I created have similar structure,so I wanted define one function to serve all tables / create table if not exists table1(id integer auto_increment primary key, num integer, table1_cxt text);// // create table if not exists table2(id integer auto_increment primary key, num integer, table2_cxt text);// // create table if not exists table3(id integer auto_increment primary key, num integer, table3_cxt text);/

# I known that:
/    def insert_record(num=None, table1_cxt=None)://
//        db.insert('table1', num=num, table1_cxt=table1_cxt ) /

so I think have some way to pass args instead of the hard code('table1', table1_cxt).
///def insert_record(table, num, field, goods): //
////return db.insert(table, num=num, field=goods)/
this is my way.I do a experiment:
///>>> def func(arg1 = 'None', arg2 = 'None')://
//    ...     print arg1//
//    ...     print arg2//
//    ...//
//    >>> def func1(a1, a2, v1, v2)://
//    ...     func(a1=v1, a2=v2)//
//    ...////
//    >>> func1('arg1', 'arg2', 3, 4)//
//    Traceback (most recent call last)://
//      File "<stdin>", line 1, in <module>//
//      File "<stdin>", line 2, in func1//
//    TypeError: func() got an unexpected keyword argument 'a1'////
/obviously, it's wrong.
**kv works for me:
/    >>> def func1(**kv)://
//    ...     func(**kv)//
////>>> func1(arg1='123', arg2='456')//
//    123//
//    456/

Maybe it's right, so I should change before saying
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to