There's not much information there which says much about the ultimate issue.
Suffice to say SQLAlchemy itself has no issue with psycopg2 and the string "A &
B", attached is a demonstration inserting, querying, updating this value and
similar in many ways. Only with a specific test case that demonstrates the
issue can anyone on the list here be of any help.
from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
e = create_engine("postgresql://scott:tiger@localhost/test", echo=True)
class A(Base):
__tablename__ = 'a'
id = Column(Integer, primary_key=True)
data = Column(String(50))
Base.metadata.drop_all(e)
Base.metadata.create_all(e)
s = Session(e)
s.add(A(data="A & B"))
s.commit()
assert s.query(A.data).all() == [("A & B",)]
assert s.query(A.data).filter_by(data="A & B").all() == [("A & B",)]
a2 = A(data="some new data")
s.add(a2)
s.commit()
a2.data = "B & C"
s.commit()
assert [a.data for a in s.query(A).order_by(A.id).all()] == ["A & B", "B & C"]
On Aug 7, 2011, at 2:19 PM, Krishnakant Mane wrote:
>
> I really don't think that's the issue.
> no eval is used.
> Secondly it did work through psycopg2 directly with postgresql
> If some would have the kindness to look at the code I am paisting it here.
> Sorry for making it long, it contains comments to explain the situation.
>
> def xmlrpc_setAccount(self,queryParams,client_id):
> '''
> Purpose : Adds new account i.e row to the account table in the
> database
> Parameters : It expects a list of queryParams which
> contains[suggestedcode(datatype:integer),groupcode(datatype:integer),subgroupcode(datatype:integer),accountname(datatype:text)openingbalance(datatype:numeric),openingdate(datatype:timestamp),balance(datatype:numeric)]
> Returns : Boolean
> Description : Querys the account table and add new row.
> To add account first time check wether max of accountcode if
> there is nothing in that coloumn maxAccountcode will increament by 1 and if
> there is max value then go to else condition and increament by 1
> It takes which is a foreign key from the group table,account
> name which is name of the account, and openingbalance which is previous
> financial year balance amount and opening date i.e when a new account is
> added (it always takes the todays date), balance is the balance amount
> remaining with that account.
> When record entered successfully it returns True else returns
> False.
> '''
> connection = dbconnect.engines[client_id].connect()
> Session = dbconnect.session(bind=connection)
> account_creation_date = str(strftime("%Y-%m-%d %H:%M:%S"))
> if queryParams[5] != 0:
>
> Session.add(dbconnect.Account(queryParams[5],queryParams[0],queryParams[1],queryParams[2],queryParams[3],account_creation_date,queryParams[4]))
> else:
> maxAccountCode = 0
> maxAccountCode =
> Session.query(func.count(dbconnect.Account.accountcode)).scalar()
> if maxAccountCode == None:
> maxAccountCode = 0
> maxAccountCode = int(maxAccountCode) + 1
> else:
> maxAccountCode = int(maxAccountCode) + 1
>
>
> Session.add(dbconnect.Account(maxAccountCode,queryParams[0],queryParams[1],queryParams[2],queryParams[3],account_creation_date,queryParams[4]))
> Session.commit()
> Session.close()
>
>
> Mind you, it is an xmlrpc call.
> and the constructor of the table instance takes all the parameter hence the
> way in which session.add is coded.
> Happy hacking.
> Krishnakant.
>
>
> On 07/08/11 21:11, Michael Bayer wrote:
>>
>>
>> On Aug 7, 2011, at 8:19 AM, Krishnakant Mane wrote:
>>
>>> Hello all.
>>> This might be interesting.
>>> I don't know if we are doing some thing wrong.
>>> We use session.query on a table and for adding records we use the orm.
>>> But look at the forwarded email, I don't know what's wrong.
>>> happy hacking.
>>
>> you'd need to know what happens when someone enters "A & B". If for example
>> you're calling eval() on that or something, "&" is a Python operator.
>>
>>
>>
>>> Krishnakant.
>>>
>>>
>>>
>>>
>>> -------- Original Message --------
>>> Subject: [Gnukhata-devel] not able to put & in account name field
>>> Date: Sun, 7 Aug 2011 17:35:51 +0530
>>> From: ankita shanbhag <[email protected]>
>>> To: gnukhata dev <[email protected]>
>>>
>>> Hello All,
>>>
>>> This may sound silly but entering & in account field eg "A & B" can
>>> cause difficulty in retrival of that account from database.
>>>
>>> I tried to query the Account table using postgres and its able to
>>> fetch record properly.
>>>
>>> I feel its a problem of SqlAlchemy.I am afraid if we want '&' then we
>>> have to look through rpc_account.py specially getAccount!!
>>>
>>> Thanking you.
>>>
>>>
>>> --
>>> "FOSS is not just about coding..its more of collaborative project
>>> management"
>>>
>>> ----
>>> ankita shanbhag
>>> _______________________________________________
>>> Gnukhata-devel mailing list
>>> [email protected]
>>> http://lists.cis-india.org/mailman/listinfo/gnukhata-devel
>>>
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "sqlalchemy" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected].
>>> For more options, visit this group at
>>> http://groups.google.com/group/sqlalchemy?hl=en.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "sqlalchemy" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/sqlalchemy?hl=en.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/sqlalchemy?hl=en.
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.