MySQL schema sync or diff
Hello, I have a MySQL database that is not managed (yet) and I would like to get an output or diff against my new model file. I'm using flask-sqlalchemy. Are there any modules that would help me discover the differences so that I can script a migration to begin using flask-migrate? Thanks! -- https://mail.python.org/mailman/listinfo/python-list
MySQL schema sync or diff
Hello, I have a MySQL database that is not managed (yet) and I would like to get an output or diff against my new model file. I'm using flask-sqlalchemy. Are there any modules that would help me discover the differences so that I can script a migration to begin using flask-migrate? Thanks! -- https://mail.python.org/mailman/listinfo/python-list
Embedding python, run a function and get it's result
Hello,
I'm messing around with the embedded python and I can get parts to work. What
I'm having a hard time is getting my head around calling a function in the
python string and getting it's result.
Question, how do I load the python script and call runMe() and get it's value?
Thanks!
Example Works
Obj-C Code:
Py_Initialize();
PyObject *py_main, *py_dict;
py_main = PyImport_AddModule("__main__");
py_dict = PyModule_GetDict(py_main);
// Run the python source code
PyRun_String([auditScript UTF8String], Py_file_input, py_dict, py_dict);
PyObject *pythonString = PyDict_GetItemString(py_dict, "x") ;
if (!pythonString) {
NSLog(@"pythonString returned NULL");
return "NO";
}
// Convert the unpickled Python string to a C string
char *cString = PyString_AsString(pythonString);
Py_DECREF(pythonString);
f (!cString) {
NSLog(@"Failed converting pythonString string to C string");
return 1;
}
NSLog(@"answer: %@",[NSString cString]);
Python Code:
x = "NA"
def runMe():
return "YES"
x = runMe()
--
https://mail.python.org/mailman/listinfo/python-list
PyDictObject to NSDictionary
Hello, I'm embedding python in to my Objective-C app and I need to know how do I convert a PyDictObject (PyObject) to a NSDictionary? Thanks! -- https://mail.python.org/mailman/listinfo/python-list
Sort list of dictionaries
Hello,
I'm new to python and I'm trying to find the right way to solve this issue I
have.
I'm trying to sort this list by name and then by version numbers. The problem
I'm having is that I can not get the version numbers sorted with the highest at
the top or sorted properly.
mylist = [{'name': u'com.google.earth', 'version': u'7.1.2.2041'},
{'name': u'com.google.earth', 'version': u'7.1.2.2019'},
{'name': u'com.google.Chrome', 'version': u'40.0.2214.93'},
{'name': u'com.google.Chrome', 'version': u'40.0.2214.91'},
{'name': u'com.google.Chrome', 'version': u'40.0.2214.111'},
{'name': u'com.google.Chrome', 'version': u'39.0.2171.99'},
{'name': u'com.google.Chrome', 'version': u'39.0.2171.95'},
{'name': u'com.google.Chrome', 'version': u'39.0.2171.71'},
{'name': u'com.google.Chrome', 'version': u'38.0.2125.122'},
{'name': u'com.google.Chrome', 'version': u'38.0.2125.111'},
{'name': u'com.google.Chrome', 'version': u'38.0.2125.104'},
{'name': u'com.google.Chrome', 'version': u'38.0.2125.101'},
{'name': u'com.google.Chrome', 'version': u'37.0.2062.94'},
{'name': u'com.google.Chrome', 'version': u'37.0.2062.120'},
{'name': u'com.google.Chrome', 'version': u'36.0.1985.143'},
{'name': u'com.google.Chrome', 'version': u'36.0.1985.125'},
{'name': u'com.google.Chrome', 'version': u'35.0.1916.153'},
{'name': u'com.google.Chrome', 'version': u'35.0.1916.114'},
{'name': u'com.google.Chrome', 'version': u'34.0.1847.137'},
{'name': u'com.google.Chrome', 'version': u'34.0.1847.131'},
{'name': u'com.google.Chrome', 'version': u'34.0.1847.116'},
{'name': u'com.google.Chrome', 'version': u'33.0.1750.152'},
{'name': u'com.google.Chrome', 'version': u'33.0.1750.149'},
{'name': u'com.google.Chrome', 'version': u'33.0.1750.146'},
{'name': u'com.google.Chrome', 'version': u'32.0.1700.107'},
{'name': u'com.google.Chrome', 'version': u'31.0.1650.63'},
{'name': u'com.google.Chrome', 'version': u'31.0.1650.57'}]
sortedlist = sorted(mylist , key=lambda x, y: x['name']
LooseVersion(elem['version'])), reverse=True)
Thanks,
Charlie
--
https://mail.python.org/mailman/listinfo/python-list
Re: Sort list of dictionaries
Sorry,
sortedlist = sorted(mylist , key=lambda elem: "%s %s" % (elem['name'],
LooseVersion(elem['version'])), reverse=True)
This is what I was trying but LooseVersion() was not sorting version numbers
like I thought it would. You will notice that Chrome version "40.0.2214.111" is
higher than "40.0.2214.91" but in the end result it's not sorting it that way.
Thanks,
Charlie
On Monday, March 2, 2015 at 10:32:40 AM UTC-8, Emile van Sebille wrote:
> On 3/2/2015 10:17 AM, Charles Heizer wrote:
> > Hello,
> > I'm new to python and I'm trying to find the right way to solve this issue
> > I have.
> >
> > I'm trying to sort this list by name and then by version numbers. The
> > problem I'm having is that I can not get the version numbers sorted with
> > the highest at the top or sorted properly.
> >
> > mylist = [{'name': u'com.google.earth', 'version': u'7.1.2.2041'},
> > {'name': u'com.google.earth', 'version': u'7.1.2.2019'},
> > {'name': u'com.google.Chrome', 'version': u'40.0.2214.93'},
> > {'name': u'com.google.Chrome', 'version': u'40.0.2214.91'},
> > {'name': u'com.google.Chrome', 'version': u'40.0.2214.111'},
> > {'name': u'com.google.Chrome', 'version': u'39.0.2171.99'},
> > {'name': u'com.google.Chrome', 'version': u'39.0.2171.95'},
> > {'name': u'com.google.Chrome', 'version': u'39.0.2171.71'},
> > {'name': u'com.google.Chrome', 'version': u'38.0.2125.122'},
> > {'name': u'com.google.Chrome', 'version': u'38.0.2125.111'},
> > {'name': u'com.google.Chrome', 'version': u'38.0.2125.104'},
> > {'name': u'com.google.Chrome', 'version': u'38.0.2125.101'},
> > {'name': u'com.google.Chrome', 'version': u'37.0.2062.94'},
> > {'name': u'com.google.Chrome', 'version': u'37.0.2062.120'},
> > {'name': u'com.google.Chrome', 'version': u'36.0.1985.143'},
> > {'name': u'com.google.Chrome', 'version': u'36.0.1985.125'},
> > {'name': u'com.google.Chrome', 'version': u'35.0.1916.153'},
> > {'name': u'com.google.Chrome', 'version': u'35.0.1916.114'},
> > {'name': u'com.google.Chrome', 'version': u'34.0.1847.137'},
> > {'name': u'com.google.Chrome', 'version': u'34.0.1847.131'},
> > {'name': u'com.google.Chrome', 'version': u'34.0.1847.116'},
> > {'name': u'com.google.Chrome', 'version': u'33.0.1750.152'},
> > {'name': u'com.google.Chrome', 'version': u'33.0.1750.149'},
> > {'name': u'com.google.Chrome', 'version': u'33.0.1750.146'},
> > {'name': u'com.google.Chrome', 'version': u'32.0.1700.107'},
> > {'name': u'com.google.Chrome', 'version': u'31.0.1650.63'},
> > {'name': u'com.google.Chrome', 'version': u'31.0.1650.57'}]
> >
> > sortedlist = sorted(mylist , key=lambda x, y: x['name']
> > LooseVersion(elem['version'])), reverse=True)
>
> You'll need to fix LooseVersion or elem or both -- or show them so we
> can help.
>
> Emile
>
>
>
> >
> > Thanks,
> > Charlie
> >
--
https://mail.python.org/mailman/listinfo/python-list
Re: Sort list of dictionaries
Never mind, the light bulb finally went off. :-\
sortedlist = sorted(mylist , key=lambda elem: "%s %s" % ( elem['name'],
(".".join([i.zfill(5) for i in elem['version'].split(".")])) ), reverse=True)
On Monday, March 2, 2015 at 10:40:30 AM UTC-8, Charles Heizer wrote:
> Sorry,
>
> sortedlist = sorted(mylist , key=lambda elem: "%s %s" % (elem['name'],
> LooseVersion(elem['version'])), reverse=True)
>
> This is what I was trying but LooseVersion() was not sorting version numbers
> like I thought it would. You will notice that Chrome version "40.0.2214.111"
> is higher than "40.0.2214.91" but in the end result it's not sorting it that
> way.
>
> Thanks,
> Charlie
>
> On Monday, March 2, 2015 at 10:32:40 AM UTC-8, Emile van Sebille wrote:
> > On 3/2/2015 10:17 AM, Charles Heizer wrote:
> > > Hello,
> > > I'm new to python and I'm trying to find the right way to solve this
> > > issue I have.
> > >
> > > I'm trying to sort this list by name and then by version numbers. The
> > > problem I'm having is that I can not get the version numbers sorted with
> > > the highest at the top or sorted properly.
> > >
> > > mylist = [{'name': u'com.google.earth', 'version': u'7.1.2.2041'},
> > > {'name': u'com.google.earth', 'version': u'7.1.2.2019'},
> > > {'name': u'com.google.Chrome', 'version': u'40.0.2214.93'},
> > > {'name': u'com.google.Chrome', 'version': u'40.0.2214.91'},
> > > {'name': u'com.google.Chrome', 'version': u'40.0.2214.111'},
> > > {'name': u'com.google.Chrome', 'version': u'39.0.2171.99'},
> > > {'name': u'com.google.Chrome', 'version': u'39.0.2171.95'},
> > > {'name': u'com.google.Chrome', 'version': u'39.0.2171.71'},
> > > {'name': u'com.google.Chrome', 'version': u'38.0.2125.122'},
> > > {'name': u'com.google.Chrome', 'version': u'38.0.2125.111'},
> > > {'name': u'com.google.Chrome', 'version': u'38.0.2125.104'},
> > > {'name': u'com.google.Chrome', 'version': u'38.0.2125.101'},
> > > {'name': u'com.google.Chrome', 'version': u'37.0.2062.94'},
> > > {'name': u'com.google.Chrome', 'version': u'37.0.2062.120'},
> > > {'name': u'com.google.Chrome', 'version': u'36.0.1985.143'},
> > > {'name': u'com.google.Chrome', 'version': u'36.0.1985.125'},
> > > {'name': u'com.google.Chrome', 'version': u'35.0.1916.153'},
> > > {'name': u'com.google.Chrome', 'version': u'35.0.1916.114'},
> > > {'name': u'com.google.Chrome', 'version': u'34.0.1847.137'},
> > > {'name': u'com.google.Chrome', 'version': u'34.0.1847.131'},
> > > {'name': u'com.google.Chrome', 'version': u'34.0.1847.116'},
> > > {'name': u'com.google.Chrome', 'version': u'33.0.1750.152'},
> > > {'name': u'com.google.Chrome', 'version': u'33.0.1750.149'},
> > > {'name': u'com.google.Chrome', 'version': u'33.0.1750.146'},
> > > {'name': u'com.google.Chrome', 'version': u'32.0.1700.107'},
> > > {'name': u'com.google.Chrome', 'version': u'31.0.1650.63'},
> > > {'name': u'com.google.Chrome', 'version': u'31.0.1650.57'}]
> > >
> > > sortedlist = sorted(mylist , key=lambda x, y: x['name']
> > > LooseVersion(elem['version'])), reverse=True)
> >
> > You'll need to fix LooseVersion or elem or both -- or show them so we
> > can help.
> >
> > Emile
> >
> >
> >
> > >
> > > Thanks,
> > > Charlie
> > >
--
https://mail.python.org/mailman/listinfo/python-list
Re: Sort list of dictionaries
On Monday, March 2, 2015 at 11:23:37 AM UTC-8, Peter Otten wrote:
> Charles Heizer wrote:
>
> > Never mind, the light bulb finally went off. :-\
> >
> > sortedlist = sorted(mylist , key=lambda elem: "%s %s" % ( elem['name'],
> > (".".join([i.zfill(5) for i in elem['version'].split(".")])) ),
> > reverse=True)
>
> This lightbulb will break with version numbers > 9 ;)
>
> Here are two alternatives:
>
> result = sorted(
> mylist,
> key=lambda elem: (elem['name'], LooseVersion(elem['version'])),
> reverse=True)
>
> result = sorted(
> mylist,
> key=lambda e: (e["name"], tuple(map(int, e["version"].split(".",
> reverse=True)
>
>
> Personally, I prefer to not use a lambda:
>
> def name_version(elem):
> return elem['name'], LooseVersion(elem['version'])
>
> result = sorted(mylist, key=name_version, reverse=True)
Peter, thank you. Me being new to Python why don't you prefer to use a lambda?
--
https://mail.python.org/mailman/listinfo/python-list
