Comments (6)
Eli, we've been getting a lot of pull requests in that corner, and things have been a bit chaotic - I hope you'll forgive the missing docs for the moment. We've recently switched to using strings instead of the SQLAlchemy types, but I do feel like we may want to still support passing them in as a fallback.
Thanks for reporting.
from dataset.
@pudo So, at this point in time, if I wanted to cast it to a float, what would that string look like?
from dataset.
Eli, I've just looked at both sources and tried to understand your problem, but it seems to me like everything should be in order. Can you be more specific about how it isn't working, given that you start with a table with no lat/lon columns?
from dataset.
I've tried @eligundry's source code, it works fine in MySQL. The followings are the code.
table = db['test'] # create a new test table
types = {
'latitude': sqlalchemy.Float,
'longitude': sqlalchemy.Float,
'timestamp': sqlalchemy.DateTime
}
item = dict(latitude=123.456,longitude=789.012,timestamp=date.today())
table.insert(item, types)
insert
function inserted item
into test
table successfully. However, there is an warning,
SAWarning: Unicode type received non-unicode bind param value
And the sqlalchemy.DateTime
type was converted to text
type in MySQL. as shown in the following.
+-----------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| latitude | float | YES | | NULL | |
| longitude | float | YES | | NULL | |
| timestamp | text | YES | | NULL | |
+-----------+---------+------+-----+---------+----------------+
from dataset.
Well, I found another issue. If I set value of latitude
to integer
, not float
, as shown below,
item = dict(latitude=123,longitude=789.012,timestamp=date.today())
Although I set latitude
to sqlalchemy.Float
type in types
,
types = {'latitude': sqlalchemy.Float, 'longitude': sqlalchemy.Float, 'timestamp': sqlalchemy.DateTime}
the final type of latitude
in MySQL table will be int
, not float
.
+-----------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| latitude | int(11) | YES | | NULL | |
| timestamp | text | YES | | NULL | |
| longitude | float | YES | | NULL | |
+-----------+---------+------+-----+---------+----------------+
And if I try to insert a new entry into the table with set latitude
equals to a float value.
item2 = dict(latitude=124.56)
MySQL will cast float
124.56 to int
125,
+----+----------+------------+-----------+
| id | latitude | timestamp | longitude |
+----+----------+------------+-----------+
| 1 | 123 | 2013-12-11 | 789.012 |
| 2 | 125 | NULL | NULL |
+----+----------+------------+-----------+
from dataset.
Thanks for testing my code @cli248! I figured out my problem. For the id
field, I was using Twitter's ids, which are BigInteger
s, which the type's param doesn't look like it can override. I'll close this. Thanks for the help!
from dataset.
Related Issues (20)
- Increase a value without reading last value
- create_table error when source data has ID field
- SQL Alchemy links in docs broken
- CompileError at `update_many` due to column in a dataset doesn't exist in a db HOT 2
- TypeError: MetaData.__init__() got an unexpected keyword argument 'bind' under sqlalchemy 2.0 HOT 1
- Looking for help: migrating dataset to sqla 2.0.0 HOT 6
- Remove duplicates from a table
- Dataset ignore my primary key HOT 3
- SQLAlchemy examples in the doc
- Parameter passing exception
- dataset wrapper for With statement HOT 3
- bug with alembic=1.11 HOT 1
- Warn if user accidentally uses set as advanced filter?
- Current use of Database.op.add_column() does not work with later versions of alembic HOT 1
- Why doesn't it automatically recycle connections in the connection pool? HOT 1
- Python 3.11 HOT 2
- where HOT 1
- add_column() takes 3 positional arguments but 4 were given HOT 1
- can add query log ? HOT 1
- Can we have a way to filter the select of * items on find and find_one
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dataset.