html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,issue,performed_via_github_app
https://github.com/simonw/sqlite-utils/issues/449#issuecomment-1179579878,https://api.github.com/repos/simonw/sqlite-utils/issues/449,1179579878,IC_kwDOCGYnMM5GTvXm,1690072,2022-07-09T17:41:32Z,2022-07-09T17:41:50Z,CONTRIBUTOR,Learnt that the types in Sqlite-utils differ somewhat from those in Sqlite. I've changed my test to account for this difference and the test has passed successfully. I will submit a PR.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1279863844,
https://github.com/simonw/sqlite-utils/issues/449#issuecomment-1174027079,https://api.github.com/repos/simonw/sqlite-utils/issues/449,1174027079,IC_kwDOCGYnMM5F-jtH,1690072,2022-07-04T17:33:04Z,2022-07-04T17:48:43Z,CONTRIBUTOR,"I've written the code and test. Would you be able to advise how to compare table columns in a pytest function properly? Experiencing a challenge when comparing columns.
Test:
```python
def test_duplicate(fresh_db):
table = fresh_db.create_table(
""table1"",
{
""text_col"": str,
""float_col"": float,
""int_col"": int,
""bool_col"": bool,
""bytes_col"": bytes,
""datetime_col"": datetime.datetime,
},
)
dt = datetime.datetime.now()
b = bytes('hello world', 'utf-8')
data = {""text_col"": ""Cleo"",
""float_col"": 3.14,
""int_col"": -2,
""bool_col"": True,
""bytes_col"": b,
""datetime_col"": str(dt)}
table1 = fresh_db[""table1""]
row_id = table1.insert(data).last_rowid
table1.duplicate('table2')
table2 = fresh_db[""table2""]
assert data == table2.get(row_id)
assert table1.columns == table2.columns # FAILS HERE
```
Result:
![Screenshot 2022-07-05 at 1 31 55 AM](https://user-images.githubusercontent.com/1690072/177198814-daac48c9-5746-49d0-a14a-14fe181c5a2f.png)
Failure is due to column types being named differently -- e.g. 'FLOAT' vs 'REAL', 'INTEGER' vs 'INT'. How should I go about comparing columns while accounting for equivalent types?
Or did I miss out something in my duplication code correctly? Here's how I did it: in `db.py`, I've added the following code:
```python
class Table(Queryable):
[...]
def duplicate(
self,
name_new: str
) -> ""Table"":
""""""
Duplicate this table in this database.
:param name_new: Name of new table.
""""""
assert self.exists()
with self.db.conn:
sql = ""CREATE TABLE [{new_table}] AS SELECT * FROM [{table}];"".format(
new_table = name_new,
table = self.name,
)
self.db.execute(sql)
return self.db[name_new]
```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1279863844,